Произошло перемещение записи из массива Oracle в Cobol
Как я могу переместить запись из оракула в массив Cobol? Когда я перемещаю одно поле, все работает как положено. Когда я пытаюсь переместить запись в Oracle VARRAY, я не могу заставить ее работать. Прекомпилятор PRO*COBOL выдает следующее сообщение об ошибке:
Error at line 137, column 12 in file ESF3.ordbso07.PCO
EXEC SQL EXECUTE
...........1
PCB-S-00576, PLS-382: expression is of wrong type
Error at line 137, column 12 in file ESF3.ordbso07.PCO
EXEC SQL EXECUTE
...........1
PCB-S-00576, PLS-0: Statement ignored
Типы Oracle:
TYPE QDELSSRD_arr IS VARRAY(30) OF QDELSSRD_typ;
TYPE SODLSSRD_typ IS RECORD ( -- DBSO07 SOK
QDELSSRD QDELSSRD_arr -- 30 x QDELSSRD_typ
OC is SODLSSRD_typ;
TYPE QDELSSRD_typ IS RECORD (
ENAMN arbetssokande.efternamn%type, -- VARCHAR2(30 CHAR)
FNAMN arbetssokande.fornamn%type, -- VARCHAR2(20 CHAR)
);
Фрагмент анонимного блока PL/SQL на языке COBOL ESQL:
FOR LV IN 1..:RC-ZHITS
LOOP
:QDELSSRD(LV) := OC.QDELSSRD(LV);
END LOOP;
Объявление переменной COBOL:
15 QSODLSSRD.
18 QDELSSRD OCCURS 30.
21 ENAMN PIC X(030).
21 FNAMN PIC X(020).
1 ответ
Я думаю, что вам нужно использовать VARYING... Например:
18 QDELSSRD VARYING OCCURS 20 TIMES.
21 ENAMN PIC X(030).
21 FNAMN PIC X(020).
http://www.pitt.edu/~hoffman/oradoc/server.804/a58232/ch04.htm