从本地变量RPGLE开始传递SEQUENCE NUMBER - > DB2

时间:2017-02-15 18:39:49

标签: sql db2 db2-400 rpgle

我试图在我的RPGLE程序上使用存储在本地varibale上的数字作为DB2序列的起始编号。这是有效的吗?类似的东西:

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

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

最后,使用DB2如何在使用后获取序列的最后一个数字?我需要将这个号码保存到DTAARA以便保存。

提前致谢,

1 个答案:

答案 0 :(得分:1)

您不能在start with语句的create sequence子句中使用主机变量。但该声明可以动态准备。所以你可以这样做:

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是一个数字变量,那么,在这种情况下,没有注入的风险。