Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / селективные процедуры в db2 / 5 сообщений из 5, страница 1 из 1
12.03.2008, 18:17
    #35186110
db2admin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селективные процедуры в db2
Добрый день!

Как я понял из документации в DB2 таким образом можно вызвать только функцию, но не процедуру:
Код: plaintext
1.
2.
SELECT name
FROM proc()

А мне нужны только некоторые столбцы, в моем случае name
...
Рейтинг: 0 / 0
13.03.2008, 10:29
    #35187113
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селективные процедуры в db2
Добрый день.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create procedure test()
language sql
begin
DECLARE loc1 RESULT_SET_LOCATOR VARYING;
DECLARE lname VARCHAR(...);
...
call proc();
ASSOCIATE LOCATOR (loc1) WITH PROCEDURE proc;
ALLOCATE C1 CURSOR FOR RESULT SET loc1;
OPEN C1;
...
FETCH C1 INTO ..., lname, ...;
...
CLOSE C1;
end@
Вы должны декларировать и использовать локальные переменные (или параметры процедуры test) для всех полей набора, возвращаемого процедурой proc, среди которых есть и name.
...
Рейтинг: 0 / 0
13.03.2008, 13:46
    #35187953
db2admin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селективные процедуры в db2
Добрый день!

Спасибо за ответ, а можно делать подобным образом или это коряво и не оптимально?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE PROCEDURE proc ()
	DYNAMIC RESULT SETS  1 

P1: BEGIN

	DECLARE GLOBAL TEMPORARY TABLE tab as(SELECT * FROM CATHEDRA)
 	DEFINITION ONLY ON COMMIT PRESERVE ROWS;
		
	INSERT INTO SESSION.tab SELECT * FROM CATHEDRA;
	
	commit;

END P1


А вызывать подобным образом

Код: plaintext
1.
2.
3.
call proc();
SELECT * FROM session.tab;
drop table session.tab;
...
Рейтинг: 0 / 0
13.03.2008, 14:13
    #35188061
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селективные процедуры в db2
db2adminа можно делать подобным образом или это коряво и не оптимально?Если вы в процедуре просто хотите заполнить временную таблицу результатом селекта, то:
1. DYNAMIC RESULT SETS 1 - не нужно, т.к. процедура не возвращает result set.
2. commit без особой надобности в процедуре не надо делать.
...
Рейтинг: 0 / 0
13.03.2008, 15:30
    #35188441
db2admin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селективные процедуры в db2
Спасибо за правки.
Меня интересует: нормально ли посредством сохранения данных во временной таблице выбирать необходимые столбцы из выборки процедуры?

Код: plaintext
1.
2.
call proc();
SELECT name FROM session.tab;

или это плохой тон и медленно работает и т.д.?
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / селективные процедуры в db2 / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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