Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Добрый день !

Подскажите плс,
почему Reports Builder не видит функцию , которая работает в PL\SQL Developer?

При компиляции модуля вываливается:

"Function may not be used in SQL''
синоним и права есть , в PL\SQL Developer dc` OK работает
Благодарю!
19 июн 06, 10:30    [2785370]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Причем здесь "не видит"? Ясно же написано - функция не может использоваться в SQL. Если что не ясно - текст функции в студию
19 июн 06, 10:36    [2785400]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
CREATE OR REPLACE FUNCTION R.ОПР_СЕБЕСТ_OS(нУИД_МАТ number, нУИД_ПАРТИИ number, сТИП varchar2)
RETURN number IS
ret number(38,2);
begin
if сТИП = 'Б' then
begin
select distinct round(поз.себестоимость_0,2)
into ret
from позиции_тмц поз,
накладные накл,
атрибуты_партии_тмц атр
where поз.накл_уид = накл.уид
and поз.поз_тмц_уид = атр.поз_тмц_уид
and атр.поз_тмц_уид = нУИД_ПАРТИИ
and поз.тмц_уид = нУИД_МАТ
and накл.док_уид = 2
and накл.номер not like 'В%'
and накл.орг_уид in (391,388,14453,
390,387,14455,
392,389,21509);
exception
when NO_DATA_FOUND then
ret:= null;
when TOO_MANY_ROWS then
select round(sum(seb)/sum(nom),2)
into ret
from (
select поз.себестоимость_0 seb,
1 nom
from позиции_тмц поз,
накладные накл,
атрибуты_партии_тмц атр
where поз.накл_уид = накл.уид
and поз.поз_тмц_уид = атр.поз_тмц_уид
and атр.поз_тмц_уид = нУИД_ПАРТИИ
and поз.тмц_уид = нУИД_МАТ
and накл.док_уид = 2
and накл.номер not like 'В%'
and накл.орг_уид in (391,388,14453, 390,387,14455, 392,389,21509)
)
where nvl(seb,0)>0;
when others then
ret:= -1;
end;
elsif сТИП = 'У' then
begin
select distinct поз.себестоимость_0
into ret
from позиции_тмц поз,
накладные накл,
атрибуты_партии_тмц атр
where поз.накл_уид = накл.уид
and поз.поз_тмц_уид = атр.поз_тмц_уид
and поз.тмц_уид = нУИД_МАТ
and накл.док_уид = 2
and накл.номер not like 'В%'
and поз.поз_тмц_уид in (select атр.поз_тмц_уид
from атрибуты_партии_тмц атр
where атр.номер = (select номер
from атрибуты_партии_тмц
where поз_тмц_уид = нУИД_ПАРТИИ))
and накл.орг_уид_клиент not in (select сост.орг_уид
from состав_группы сост
where сост.гр_орг_уид = 358)
and накл.орг_уид_юрлицо_клиента not in (select сост.орг_уид
from состав_группы сост
where сост.гр_орг_уид = 13961);
exception
when NO_DATA_FOUND then
ret:= null;
when TOO_MANY_ROWS then
select round(sum(seb)/sum(nom),2)
into ret
from (
select поз.себестоимость_0 seb,
1 nom
from позиции_тмц поз,
накладные накл,
атрибуты_партии_тмц атр
where поз.накл_уид = накл.уид
and поз.поз_тмц_уид = атр.поз_тмц_уид
and поз.тмц_уид = 52876
and накл.док_уид = 2
and накл.номер not like 'В%'
and поз.поз_тмц_уид in (select атр.поз_тмц_уид
from атрибуты_партии_тмц атр
where атр.номер = (select номер
from атрибуты_партии_тмц
where поз_тмц_уид = 335678))
and накл.орг_уид_клиент not in (select сост.орг_уид
from состав_группы сост
where сост.гр_орг_уид = 358)
and накл.орг_уид_юрлицо_клиента not in (select сост.орг_уид
from состав_группы сост
where сост.гр_орг_уид = 13961)
)
where nvl(seb,0)>0;
when others then
ret:= -3;
end;
else
ret:=-2;
end if;
return ret;
end ОПР_СЕБЕСТ_OS;
19 июн 06, 10:49    [2785492]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
oleggs
Guest
У вас наверное репорт старенький. Он не понимает Ваших кириллиц в названиях функции, таблиц, псевдономов.
19 июн 06, 11:01    [2785561]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
oleggs
Guest
Если оракл на сервере, 10-ый наверное у Вас, и понимает, то репорт нет. Поставьте 10-ый билдер и тот же репорт-сервер, если он необходим.
19 июн 06, 11:04    [2785592]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Дело не в версиях сервера ,
Другие функции тоже на русском - и хорошо вызываются и отрабатывают
19 июн 06, 11:31    [2785814]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
Sqaimes
Member

Откуда: Украина, Мариуполь
Сообщений: 443
ошибка у тебя скорее всего в описании :
CREATE OR REPLACE FUNCTION R.ОПР_СЕБЕСТ_OS(нУИД_МАТ number, нУИД_ПАРТИИ number, сТИП varchar2)...
, в противном случае я думаю выдалась бы ошибка, связанная с телом функции ....
R.ОПР_СЕБЕСТ_OS - точка в описании имени?
да и параметры на русском...
19 июн 06, 12:09    [2786103]     Ответить | Цитировать Сообщить модератору
 Re: Reports Builder не видит функцию , которая работает в PL\SQL Developer  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
R - имя схемы, в которой создана функция
19 июн 06, 12:26    [2786200]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить