powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Почему не работает функция?
5 сообщений из 5, страница 1 из 1
Почему не работает функция?
    #38968289
asmnkt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть функция:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE OR REPLACE FUNCTION getps ()
	 returns table 
			 (
			 	payId varchar(50),
			 	firmId varchar(50),
			 	serviceId varchar(50),
			 	bankId varchar(50),
			 	sumPay varchar(50)
			 )

    
return
	SELECT	pay.id, services.firm_id, payitem.service_id, office.bank_id, payitem.pay_sum
        FROM alex.t_pay pay                                              
			JOIN gpt.t_pay_item payitem	ON pay.id = payitem.pay_id                      
			JOIN gpt.t_office office		ON pay.office_id = office.id                  
			JOIN gpt.t_service services	ON payitem.service_id = services.id                 
			JOIN gpt.t_account account	ON account.id = payitem.account_id
			join gpt.t_firm firm 		ON services.firm_id=firm.id
        WHERE       pay.active = 'Y' AND pay.pay_date = cast('25.05.2015' as date) and account.account in ('524029')
        GROUP BY	services.firm_id, payitem.service_id, office.bank_id, pay.id, payitem.pay_sum



Хочу получить результаты так:
Код: plsql
1.
select * from table(gpt.getpays())


Но результат пустой.
Если просто выполняю запрос, то в выборке есть результат.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT	pay.id, services.firm_id, payitem.service_id, office.bank_id, payitem.pay_sum
        FROM alex.t_pay pay                                              
			JOIN gpt.t_pay_item payitem	ON pay.id = payitem.pay_id                      
			JOIN gpt.t_office office		ON pay.office_id = office.id                  
			JOIN gpt.t_service services	ON payitem.service_id = services.id                 
			JOIN gpt.t_account account	ON account.id = payitem.account_id
			join gpt.t_firm firm 		ON services.firm_id=firm.id
        WHERE       pay.active = 'Y' AND pay.pay_date = cast('25.05.2015' as date) and account.account in ('524029')
        GROUP BY	services.firm_id, payitem.service_id, office.bank_id, pay.id, payitem.pay_sum


Подскажите, что не так?
...
Рейтинг: 0 / 0
Почему не работает функция?
    #38968316
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asmnkt,

Не потому, что названия функций разные? (getps() vs gpt.getpays())

Теоретически такое было бы возможно с ROW/LBAC access control, когда ф-я создана под другим пользователем и "делегирует" его права на доступ посредством прав execute на себя другому пользователю. Используется редко, как там эти права делегируются надо подробней смотреть, но, наверное, не ваш случай.
...
Рейтинг: 0 / 0
Почему не работает функция?
    #38968326
bnm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bnm
Гость
asmnkt,

select * from table(gpt.getpays()) as ttt
?
...
Рейтинг: 0 / 0
Почему не работает функция?
    #38968334
asmnkt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,
Поправил название ф-ии. Результат тот же.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE OR REPLACE FUNCTION gpt.getpays ()
	 returns table 
			 (
			 	payId varchar(50),
			 	firmId varchar(50),
			 	serviceId varchar(50),
			 	bankId varchar(50),
			 	sumPay varchar(50)
			 )

    
return
SELECT pay.id, services.firm_id, payitem.service_id, office.bank_id, payitem.pay_sum
FROM gpt.t_pay pay                                              
 JOIN gpt.t_pay_item payitem ON pay.id = payitem.pay_id                      
 JOIN gpt.t_office office	 ON pay.office_id = office.id                  
 JOIN gpt.t_service services ON payitem.service_id = services.id                 
 JOIN gpt.t_account account ON account.id = payitem.account_id
 join gpt.t_firm firm ON services.firm_id=firm.id
WHERE pay.active = 'Y' AND pay.pay_date = cast('25.05.2015' as date) and account.account in ('524029')
GROUP BY services.firm_id, payitem.service_id, office.bank_id, pay.id, payitem.pay_sum
...
Рейтинг: 0 / 0
Почему не работает функция?
    #38968336
asmnkt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bnm,
Так тоже пробовал, не помогло.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Почему не работает функция?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]