Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Табличная функция, union, входящие параметры / 4 сообщений из 4, страница 1 из 1
23.08.2012, 10:46
    #37927566
K.T.V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличная функция, union, входящие параметры
И снова вопрос по DB2 10, z/os.
Судя по всему, у меня табличная функция не поддерживает передачу входящих параметров во вложенный подзапрос с union.
Поясню на примере. Если во вложенном подзапросе будет только одна выборка с использованием входных параметров, то все отлично работает.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION "SHEMA"."MYFUNC" (PARAM1 INT,
						     PARAM2 INT									
						    )
    RETURNS TABLE (ID INT,PAR1 INT,PAR2 INT)
    READS SQL DATA
    NO EXTERNAL ACTION
    RETURN
	SELECT TEMP.ID,TEMP.PAR1,TEMP.PAR2
	FROM (SELECT 0 AS ID,PARAM1 AS PAR1,PARAM2 AS PAR2 FROM SYSIBM.SYSDUMMY1
		 ) AS TEMP


Вернет, к примеру
Код: plsql
1.
2.
3.
 ID PAR1 PAR2
 -- ---- ----
  0    1    1 


Если же в подзапросе появляется union, то значения параметров в него перестают передаваться.
Вот этот вариант у меня возвращает пустые значения:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE FUNCTION "SHEMA"."MYFUNC" (PARAM1 INT,
                                                     PARAM2 INT									
                                                    )
    RETURNS TABLE (ID INT,PAR1 INT,PAR2 INT)
    READS SQL DATA
    NO EXTERNAL ACTION
    RETURN
	SELECT TEMP.ID,TEMP.PAR1,TEMP.PAR2
	FROM (	
		SELECT 0 AS ID,PARAM1 AS PAR1,PARAM2 AS PAR2 FROM SYSIBM.SYSDUMMY1
		UNION
		SELECT 1 AS ID,PARAM1 AS PAR1,PARAM2 AS PAR2 FROM SYSIBM.SYSDUMMY1
		UNION
		SELECT 2 AS ID,PARAM1 AS PAR1,PARAM2 AS PAR2 FROM SYSIBM.SYSDUMMY1
	 ) AS TEMP


Вернет
Код: plsql
1.
2.
3.
4.
5.
 ID PAR1 PAR2
 -- ---- ----
  0         
  1
  2	           



В чем подвох? Понятно, что переписать несложно, просто хочется разобраться.
...
Рейтинг: 0 / 0
23.08.2012, 12:26
    #37927783
xz321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличная функция, union, входящие параметры
Синтаксическое несоответсвие

Ты передаешь PAR1, а в запросе выбираешь PARAM1
...
Рейтинг: 0 / 0
23.08.2012, 14:29
    #37928016
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличная функция, union, входящие параметры
K.T.V.,

Код: plsql
1.
2.
3.
4.
5.
ID PAR1 PAR2
 -- ---- ----
  0     1    1
  1     1    1
  2	1    1



По идее он должен вернуть вот так.
Только зачем вам это?
...
Рейтинг: 0 / 0
23.08.2012, 15:12
    #37928119
K.T.V.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличная функция, union, входящие параметры
Потому что в реальной функции запрос несколько сложнее, чем в этом примере :) Я просто пыталась подобрать максимально простой пример, чтобы сразу было понятно, что там косяк с параметрами. vadipok, в том-то и дело, что по идее, он должен вернуть вот так, но на практике этого не происходит!
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Табличная функция, union, входящие параметры / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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