簡體   English   中英

如何在 db2 iSeries as400 db 中使用 EXECUTE INTO 語句?

[英]How to use EXECUTE INTO statement in db2 iSeries as400 db?

我有一個包含以下幾行的程序:

ITERATOR 的值在循環中動態設置

  DECLARE V_LOSS_ID integer;
  DECLARE V_STATE_CODE CHARACTER(2);
  DECLARE V_CLASS_CODE CHARACTER(4);
  SET V_QUERY = 'set (?,?,?) = (select LOSS_ID, STATE_CODE, CLASS_CODE from LOSS L limit 1 offset '|| ITERATOR || ' )';
  PREPARE STMT FROM V_QUERY;
  EXECUTE STMT into V_LOSS_ID, V_STATE_CODE, V_CLASS_CODE;

我在 iSeries db2 中收到以下錯誤 - [SQL0104] 令牌 V_LOSS_ID 無效。 有效令牌:SQL 描述符。

但是,此過程適用於 DB2 LUW 數據庫。 僅在 DB2 iseries as400 數據庫上面臨此問題

IBM i 的 Db2 中的EXECUTE具有不同的功能。
所以,使用類似下面的東西:

DECLARE ITERATOR ...;
DECLARE V_LOSS_ID integer;
DECLARE V_STATE_CODE CHARACTER(2);
DECLARE V_CLASS_CODE CHARACTER(4);
DECLARE C1 CURSOR FOR STMT;
...
--SET V_QUERY = 'set (?,?,?) = (select LOSS_ID, STATE_CODE, CLASS_CODE from LOSS L limit 1 offset '|| ITERATOR || ' )';
SET V_QUERY = 'select LOSS_ID, STATE_CODE, CLASS_CODE from LOSS L limit 1 offset '|| ITERATOR;
PREPARE STMT FROM V_QUERY;
--EXECUTE STMT into V_LOSS_ID, V_STATE_CODE, V_CLASS_CODE;
OPEN C1;
FETCH C1 INTO V_LOSS_ID, V_STATE_CODE, V_CLASS_CODE;
CLOSE C1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM