параметризация курсора набора строк db2 - PullRequest
0 голосов
/ 06 марта 2020

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

Вместо: переменной хоста SomeValue в этом вопросе / фрагменте:

    EXEC SQL                                                      

     FETCH NEXT ROWSET FROM C_NJSRD2_cursor_declared_and_opened                        
     FOR :SomeValue ROWS                                            
     INTO                                                   

             :NJCT0022.SL_ISO2         :NJMT0022.iSL_ISO2   
     etc....

Вот некоторые пояснения:

Параметризация запроса, такого как опубликованный во вводном вопросе, действительно работает, если я установил переменную хоста: SomeValue в 1 и определил массивы переменных хоста для заполнения из базы данных до размера 1, например

  struct
  ??<
       char       SL_ISO2   ??(1??) ??(3??); // sorry for Z/os trigraphs
       etc..

И это также работает, если для массивов переменных хоста установить большее целочисленное значение (например, 20) и жестко закодировать значение (: SomeValue) в это значение в выборке набора курсоров.

 EXEC SQL

     FETCH NEXT ROWSET FROM C_NJSRD2
     FOR 20 ROWS
     INTO

             :NJCT0022.SL_ISO2         :NJMT0022.iSL_ISO2
            ,:NJCT0022.BZ_COUNTRY      :NJMT0022.iBZ_COUNTRY
            ,:NJCT0022.KZ_RISK         :NJMT0022.iKZ_RISK

Я sh получу количество строк от вызывающей программы (COBOL), а в идеале соответствующим образом установлю размер массивов переменных хоста. Чтобы избежать проблем с изменением размера массива переменных, было бы неплохо также увеличить размеры массивов переменных хоста до большего значения.

Эти комбинации возвращают ошибки компиляции: HOST VARIABLE ARRAY "NJCT0022" НЕ ИМЕЕТСЯ ИЛИ НЕ УКАЗАНО ИЛИ НЕ ПОЛЕЗНО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...