2017-02-15 10 views
1

即時嘗試將存儲在我的RPGLE程序的本地varibale上的數字用作DB2序列的起始編號。這可能嗎?例如:即時通過SEQUENCE NUMBER從本地變量RPGLE開始 - > DB2

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

是編譯器的否定。有任何想法嗎?。

最後,使用DB2如何在使用它之後獲得序列的最後一個數字?我需要將這個號碼保存到DTAARA中。

由於提前,

回答

1

您不能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是數值變量,那麼,在這種情況下,沒有注射的風險。