我正在试用z/OS上的IBM DB2(使用IBM Cloud Wazi/Virtual server实例(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执行存储过程