我正在 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 z/OS 上无法直接从 SQL 语句进行。 SQL PL 只能作为存储过程的一部分执行。
您可以使用 CALL 从 SQL 执行存储过程