【问题标题】:Change delimiter in a DB2 script更改 DB2 脚本中的分隔符
【发布时间】:2021-05-05 06:49:15
【问题描述】:

我已经在 Docker 容器中设置了 DB2 v11.5.5.1 并通过 DBeaver 访问它。

我想在 DB2 数据库上运行带有 CREATE PROCEDURE 语句的脚本。

但它返回SQL Error [42601]: An unexpected token "END-OF-STATEMENT" was found following "E IF EXISTS TEMP_IDS"

我尝试的示例脚本在这里。

--#SET DELIMITER $$
CREATE PROCEDURE proc_name ()
BEGIN
    -- some statements;
END$$

如何解决 DB2 脚本中的这个分隔符问题?我认为更改分隔符的问题。

【问题讨论】:

    标签: sql docker db2 dbeaver


    【解决方案1】:

    您的错误是您尝试在 DBEaver 中使用 Db2 CLP(命令行处理器)功能,即您尝试使用 --#SET TERMINATOR...

    如果您使用 Db2 clp 执行脚本(即在 MS-Windows 上是 db2.exe,而在 linux/unix 上在 shell 中使用 db2 命令),则此功能 --#SET TERMINATOR 可用。

    对于 Dbeaver,一个 jdbc 应用程序,有一种不同的方法来配置替代语句终止符/分隔符。使用属性设置来查找此选项并在该 GUI 中选择一个有效字符。然后重试。

    例如,在 Dbeaver Community Edition 版本 2021.04 中,使用:

    File > Properties > Editors > SQL Exitor > SQL Processing: "Statements Delimiter" 
    

    【讨论】:

    • 除了将Statements delimiter 更改为有效字符之外,我还必须打开Ignore native delimiter。现在它正在工作。
    猜你喜欢
    • 2015-09-03
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多