| ...

问题描述 投票:0回答:1
I don't have DB2 for z

SET V_SELECT =                   
  'SELECT ' || SELECT_FIELDS ||  
  ' INTO '  || INTO_FIELDS   ||  
  ' FROM '  || TABLE_NAME    ||  
  ' WHERE ' || WHERE_CLAUSE  ||  
  ' WITH UR';    
EXECUTE IMMEDIATE V_SELECT;     

我为select创建了动态DB2存储过程。我将使用这个通用查询来执行多个选择语句,通过传递参数。

   SELECT B.PROD_TYP  
   INTO HOST_VAR_PROD_TYP
   FROM TABLE_A   A
   INNER JOIN TABLE_B  B
   ON A.ROW_ID = B.ROW_ID
   WHERE A.PROD_CD = HOST_VAR_PROD_CD;

下面是我的查询的样子。

当我运行这个查询时,我得到的结果是

"INTO CLAUSE IS NOT PERMETED"。

先谢谢你。
sql stored-procedures dynamic db2 cobol
1个回答
1
投票

我为select创建了动态DB2存储过程。我将使用这个通用查询执行多个选择语句,通过传递参数。SET V_SELECT = 'SELECT '是在手边,但你应该做这样的事情。

  DECLARE V_STMT VARCHAR(200);
  DECLARE V_NAME VARCHAR(128);
  DECLARE V_COLCOUNT INT;

  SET V_NAME = 'SYSTABLES';
  SET V_STMT = 'SET ? = (SELECT COLCOUNT FROM SYSIBM.SYSTABLES WHERE CREATOR = ''SYSIBM'' AND NAME = ?)';
  PREPARE S1 FROM V_STMT;
  EXECUTE S1 INTO V_COLCOUNT USING V_NAME;

你需要 SET 声明。构造 V_STMT 根据您的需求,价值。1级 ? 表示你得到的结果是 V_COLCOUNT 从你 select. 第2次 ? 表示你用 V_NAME 可变的。

© www.soinside.com 2019 - 2024. All rights reserved.