【问题标题】:Illegal symbol 'EXEC' in DB2 z/osDB2 z/os 中的非法符号 \'EXEC\'
【发布时间】:2022-08-24 20:19:54
【问题描述】:

我正在尝试从 dbVisualizer 在 db2 z/os 数据库上创建游标

我试过的查询是

--/
EXEC SQL
DECLARE E1 CURSOR FOR
SELECT NAME FROM EMP e
            WHERE EXISTS (SELECT 1 FROM ADDRESS a
            WHERE e.ID = t.a.id )
FOR UPDATE
END-EXEC.
/

但是ide抛出了以下错误

[Code: -104, SQL State: 42601]  ILLEGAL SYMBOL \"EXEC\". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: <ERR_STMT> <WNG_STMT> TRANSFER GET SQL SAVEPOINT HOLD FREE. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.28.11

根据documentation,查询语法是正确的。但我不确定为什么会抛出错误。有人可以帮忙吗

    标签: sql db2 db2-zos


    【解决方案1】:

    您不能在像 dbVisualiser 这样的动态 SQL 工具中使用嵌入式 SQL(任何以 EXEC SQL 开头的东西)。

    您只能将此类代码(EXEC SQL ...)嵌入到另一种 3GL 编程语言中,如 cobol 或 c 或 c++ 等,这涉及使用预处理器。

    或者使用 SQLJ。

    或者使用 SQL PL 例程而不是嵌入式 SQL(例如存储过程或函数),它允许您使用游标等,并且您可以从 DbVis 和类似工具调用此类例程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多