Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Использование Global Temporary Table при создании функции  [new]
eugenia-ch
Member

Откуда:
Сообщений: 22
Добрый день!
Создаю функцию вида:
CREATE FUNCTION FUNC_1()
RETURNS TABLE (
VALUE_1 INTEGER,
VALUE_2 INTEGER,
VALUE_3 DECIMAL(15,2)
)
LANGUAGE SQL

BEGIN

DECLARE GLOBAL TEMPORARY TABLE SESSION.TABLE_TMP
(VALUE_1 INTEGER,VALUE_2 INTEGER,VALUE_3 DECIMAL(15,2));

FOR V1 AS CUR CURSOR FOR
select *
from TABLE_1
DO
	insert into SESSION.TABLE_TMP (VALUE_1,VALUE_2,VALUE_3)
	select VALUE_1,VALUE_2,VALUE_3
	from table(FUNC_2(V1.VALUE_1)) as T;
END FOR;

RETURN select VALUE_1,VALUE_2,VALUE_3
from SESSION.TABLE_TMP;
	
END;


Получаю:

DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "studid" was found following "FOR; RETURN
select". Expected tokens may include: "(". LINE NUMBER=23. SQLSTATE=42601

SQL0104N An unexpected token "VALUE_1" was found following "FOR;
RETURN select". Expected tokens may include: "(


Прошу помощи в решении ситуации. Версия IBM DB2 Express-C 9.7.
Спасибо.
6 авг 12, 15:07    [12968619]     Ответить | Цитировать Сообщить модератору
 Re: Использование Global Temporary Table при создании функции  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
eugenia-ch,

Добрый день.

1. Вы не можете в функции обращаться к declared global temporary table.
Можете использовать created global temporary table.
Вы создаёте CGTT 1 раз, информация о ней помещается в системный каталог, потом вы можете использовать её в функции.

2. Compiled Compout SQL нельзя использовать в табличной функции.
Используйте

BEGIN ATOMIC
...
END@

а не

BEGIN
END@
6 авг 12, 16:20    [12969274]     Ответить | Цитировать Сообщить модератору
 Re: Использование Global Temporary Table при создании функции  [new]
DB2NBie
Member

Откуда:
Сообщений: 6
eugenia-ch, синтаксис DEFINE GLOBAL TEMPORARY TABLE в функциях не поддерживается
http://database.ittoolbox.com/groups/technical-functional/db2-l/temporary-table-in-body-function-1333991
6 авг 12, 16:43    [12969460]     Ответить | Цитировать Сообщить модератору
 Re: Использование Global Temporary Table при создании функции  [new]
eugenia-ch
Member

Откуда:
Сообщений: 22
Mark Barinstein, DB2NBie, спасибо.
6 авг 12, 17:18    [12969762]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить