从局部变量 RPGLE 传递序列号开始 -> DB2



im试图使用我的rpgle程序上的本地varibale上存储的数字作为DB2序列的开始号。这是可以的吗?类似:

Exec SQL
   create sequence MySequence
   start with :MYVAR
   increment by 1
   no maxvalue
   no cycle;

是编译器的禁忌。有什么想法吗?

最后,使用DB2在使用后如何获得序列的最后一个数字?我需要将该数字保存到Dtaara。

预先感谢

您不能在create sequence语句的start with子句中使用主机变量。但是该陈述可以动态准备。因此,您可以这样做:

dcl-s myvar          Packed(5:0);
dcl-s stmt           Varchar(512);
stmt = 'create sequence MySequence ' +
          'start with ' + %char(myvar) +
          'increment by 1 ' +
          'no maxvalue ' +
          'no cycle';
exec sql execute immediate :stmt;

通常将这样的SQL语句连接为SQL注入风险,但是如果myvar是数字变量,那么在这种情况下,没有注射风险。

最新更新