进入子句是不允许的
INTO CLAUSE IS NOT PERMITTED
我为 select 创建了动态 DB2 存储过程。我将使用此通用查询通过传递参数来执行多个 select 语句。
SET V_SELECT =
'SELECT ' || SELECT_FIELDS ||
' INTO ' || INTO_FIELDS ||
' FROM ' || TABLE_NAME ||
' WHERE ' || WHERE_CLAUSE ||
' WITH UR';
EXECUTE IMMEDIATE V_SELECT;
下面是我的查询的样子。
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 PERMITTED".
提前致谢。
我手头没有 z/os 的 DB2,但您应该这样做:
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
值。第一个 ?
表示您从 select
进入 V_COLCOUNT
的结果。第二个 ?
表示您使用 V_NAME
变量传递的参数。
我为 select 创建了动态 DB2 存储过程。我将使用此通用查询通过传递参数来执行多个 select 语句。
SET V_SELECT =
'SELECT ' || SELECT_FIELDS ||
' INTO ' || INTO_FIELDS ||
' FROM ' || TABLE_NAME ||
' WHERE ' || WHERE_CLAUSE ||
' WITH UR';
EXECUTE IMMEDIATE V_SELECT;
下面是我的查询的样子。
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 PERMITTED".
提前致谢。
我手头没有 z/os 的 DB2,但您应该这样做:
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
值。第一个 ?
表示您从 select
进入 V_COLCOUNT
的结果。第二个 ?
表示您使用 V_NAME
变量传递的参数。