【发布时间】:2020-09-29 03:30:11
【问题描述】:
我为选择创建了动态 DB2 存储过程。我将使用这个通用查询通过传递参数来执行多个选择语句。
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;
当我运行它时,我得到了
“不允许进入条款”。
提前致谢。
【问题讨论】:
-
动态 SQL 似乎不支持 INTO
-
@EricBrandt,感谢您的回复。有没有办法可以将 Selected 列的值返回给调用程序。
-
DB2 中没有
Dynamic Stored procedure这样的术语。您可能使用动态 sql 语句创建了一个 SQL 过程。HOST_VAR_PROD_CD是什么,它的值是如何传递给 SP 的?这是 SP 变量/参数吗?此 select 语句是否预计仅返回不超过 1 行?HOST_VAR_PROD_TYP是什么?这是SP变量/参数吗? -
@MarkBarinstein,感谢您的检查。是的,我正在使用动态 sql 创建一个存储过程。 HOST_VAR_PROD_CD 和 HOST_VAR_PROD_TYP 在存储过程中定义。我将使用 COBOL 程序为 HOST_VAR_PROD_CD 赋值并传递给存储过程。
CREATE PROCEDURE T2.SPOF2200 (IN SELECT_FIELDS VARCHAR(100), IN INTO_FIELDS VARCHAR(100),IN TABLE_NAME VARCHAR(200),IN WHERE_CLAUSE VARCHAR(200),IN HOST_VAR_PROD_CD DEC(3,0), OUT HOST_VAR_PROD_TYP CHAR(05))
标签: sql stored-procedures dynamic db2 cobol