Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / передавать курсор как параметр в несколько последовательных процедур? / 4 сообщений из 4, страница 1 из 1
17.07.2006, 19:15
    #33859076
передавать курсор как параметр в несколько последовательных процедур?
есть отлаженная процедура, которая выдает свободные катушки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CREATE PROCEDURE MMNALIB.AUTOPICK_AVAILABLECOILS (
    MHBRAN          DECIMAL( 2 , 0 ),   -- branch
    MHCUST          DECIMAL( 5 , 0 ),   -- cust#
    MHCNFM          DECIMAL( 7 , 0 ),   -- order#
    MHPART          CHARACTER( 20 )   -- part id
)
    DYNAMIC RESULT SETS  1 
P1: BEGIN


DECLARE curAvailableCoils CURSOR WITH RETURN
FOR
SELECT RPTAGN, RPWEIG
FROM MMNALIB.RP091 AS RP091
WHERE RPSTAT = 'A'  -- only reserved coil are available
AND NOT EXISTS (
	SELECT *
	FROM MMNALIB.WIMSMRD AS WIMSMRD
	WHERE WIMSMRD.MDTAGN = RP091.RPTAGN
	AND WIMSMRD.MDCUST = RP091.RPCUST
	AND WIMSMRD.MDBRAN = RP091.RPBRAN
	AND WIMSMRD.MDPART = RP091.RPPART
)
ORDER BY RPRDTE, RPRTIM; -- sort by recieve date/time

OPEN curAvailableCoils;

END P1 

Надо один раз получить доступные катушки, а потом этот курсор-рекордсет передавать по дням недели, пока катушки не исчерпаются:
Что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    CALL MMNALIB.AUTOPICK_AVAILABLECOILS (
        MHBRAN,--          DECIMAL(2,0),   -- branch
        MHCUST,--          DECIMAL(5,0),   -- cust#
        MHCNFM,--          DECIMAL(7,0),   -- order#
        MHPART --          CHARACTER(20)   -- part id
    ); -- запустили процедуру, которая вернула курсор для результатов

    -- ассоциируем его с резалтсет-локатором 
    ASSOCIATE RESULT SET LOCATOR(resultsetCoils)
    WITH PROCEDURE MMNALIB.AUTOPICK_AVAILABLECOILS;


    CALL MMNALIB.AUTOPICK_WEEKDAY (
        MOND, MHBRAN, MHCUST, MHCNFM, MHPART, 
        resultsetCoils, -- передаем resultsetCoils как параметр
        D1, ORDERED1, ACTUAL1
    );

    CALL MMNALIB.AUTOPICK_WEEKDAY (
        MOND, MHBRAN, MHCUST, MHCNFM, MHPART, 
        resultsetCoils, -- та же фигня
        D2, ORDERED2, ACTUAL2
    );

    CALL MMNALIB.AUTOPICK_WEEKDAY (
        MOND, MHBRAN, MHCUST, MHCNFM, MHPART, 
        resultsetCoils,  -- не может бить?! :)
        D3, ORDERED3, ACTUAL3
    );


Вопрос, какой синтаксис должен быть в AUTOPICK_WEEKDAY,
чтобы процедура понимала, что параметр - resultsetCoils - это курсор??

table like не помог
...
Рейтинг: 0 / 0
18.07.2006, 09:35
    #33859660
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передавать курсор как параметр в несколько последовательных процедур?
В db2 нет параметров типа курсор.
После вызова AUTOPICK_AVAILABLECOILS заполняйте global temporary table содержимым result set'а и передавайте в процедуру имя этой таблицы.
...
Рейтинг: 0 / 0
21.07.2006, 14:21
    #33870165
передавать курсор как параметр в несколько последовательных процедур?
Mark BarinsteinВ db2 нет параметров типа курсор.
После вызова AUTOPICK_AVAILABLECOILS заполняйте global temporary table содержимым result set'а и передавайте в процедуру имя этой таблицы.

о temporary table придется забыть.
CREATE/DECLARE GLOBAL TEMPORARY TABLE для AS400 не поддерживается
вычитал в Table 2. SQL statements in SQL Procedures - portability across DB2 servers
из Cross-Platform DB2 Stored Procedures: Building and Debugging
...
Рейтинг: 0 / 0
21.07.2006, 15:25
    #33870480
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передавать курсор как параметр в несколько последовательных процедур?
Я не в курсе, как до v5r2 было, но, начиная с нее, поддерживаются точно.
Подавляющее число своих процедур я написал именно с их использованием.
Более того, они поддерживаются и в UDF тоже, в отличии от DB2 for LUW.
Видимо, ibm-еры давно этот мануал не обновляли.
Какая версия iSeries у клиента?
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / передавать курсор как параметр в несколько последовательных процедур? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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