无需存储过程直接在 DB2 z/OS 上运行 SQL PL

问题描述 投票:0回答:1

我正在 z/OS 上试验 IBM DB2(使用 IBM Cloud Wazi / 虚拟服务器实例 (s390x) 并直接使用 DBeaver 和 IBM Data Studio 运行一些查询。

我想直接从 SQL 脚本执行一个简单的 SQL PL 脚本,就像我在 DB2 LUW 和其他数据库上所做的那样。

BEGIN
DECLARE SQLCODE INTEGER;

SELECT COUNT(*) INTO SQLCODE FROM SYSIBM.SYSTABLES WHERE TYPE = 'T' AND TRIM(CREATOR) = 'IBMUSER' AND TRIM(NAME) = 'BOOKS';

IF SQLCODE = 1 THEN
    EXECUTE IMMEDIATE 'DROP TABLE IBMUSER.BOOKS';
END IF;
END

执行后直接返回各种错误。喜欢以下;

[Code: -104, SQL State: 42601]  ILLEGAL SYMBOL "SQLCODE". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: SECTION. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.28.11]

我不能直接从 sql 窗口/客户端工具向数据库发送 SQL PL 代码是否正确?我已经通过创建存储过程并使用 CALL 功能使其正常工作,但我不想创建所有类型的存储过程?

或者我可以通过直接从 sql 脚本使用 SQL PL 的方式配置数据库吗?

db2 db2-zos sql-pl
1个回答
0
投票

这在 DB2 z/OS 上无法直接从 SQL 语句进行。 SQL PL 只能作为存储过程的一部分执行。

您可以使用 CALL 从 SQL 执行存储过程

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