是否有一种方法可以对未硬编码的参数进行编程?
在这个问题/片段中代替 :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
我希望从调用程序(COBOL)接收行数,并相应地设置主机变量数组的大小。为了避免变量数组大小问题,将主变量数组过大到更大的值也很好。
这些组合返回编译错误:HOST VARIABLE ARRAY "NJCT0022" IS EITHER NOT DEFINED or IS NOT USABLE