Происходит перемещение записи из массива 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

Типы оракула:

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).

person Stefan Larsson    schedule 21.11.2011    source источник


Ответы (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

person Stephen Gennard    schedule 23.11.2011