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

Sql 传递从局部变量RPGLE开始的序列号->;DB2,sql,db2,db2-400,rpgle,Sql,Db2,Db2 400,Rpgle,我试图使用我的RPGLE程序中本地变量上存储的一个数字作为DB2序列的起始编号。这可能吗?。比如: Exec SQL create sequence MySequence start with :MYVAR increment by 1 no maxvalue no cycle; 对于编译器来说是不可能的。有什么想法吗 最后,使用DB2如何获得使用后的序列的最后编号?我需要把那个号码存到DTAARA保存 提前感谢,您不能在create sequence语句的sta

我试图使用我的RPGLE程序中本地变量上存储的一个数字作为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
是一个数值变量,那么在这种情况下,就没有注入风险