powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / передавать курсор как параметр в несколько последовательных процедур?
4 сообщений из 4, страница 1 из 1
передавать курсор как параметр в несколько последовательных процедур?
    #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
передавать курсор как параметр в несколько последовательных процедур?
    #33859660
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В db2 нет параметров типа курсор.
После вызова AUTOPICK_AVAILABLECOILS заполняйте global temporary table содержимым result set'а и передавайте в процедуру имя этой таблицы.
...
Рейтинг: 0 / 0
передавать курсор как параметр в несколько последовательных процедур?
    #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
передавать курсор как параметр в несколько последовательных процедур?
    #33870480
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не в курсе, как до v5r2 было, но, начиная с нее, поддерживаются точно.
Подавляющее число своих процедур я написал именно с их использованием.
Более того, они поддерживаются и в UDF тоже, в отличии от DB2 for LUW.
Видимо, ibm-еры давно этот мануал не обновляли.
Какая версия iSeries у клиента?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / передавать курсор как параметр в несколько последовательных процедур?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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