繁体   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