更改 DB2 脚本中的分隔符

Posted

技术标签:

【中文标题】更改 DB2 脚本中的分隔符【英文标题】:Change delimiter in a DB2 script 【发布时间】: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 脚本中的这个分隔符问题?我认为更改分隔符的问题。

【问题讨论】:

【参考方案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。现在它正在工作。

以上是关于更改 DB2 脚本中的分隔符的主要内容,如果未能解决你的问题,请参考以下文章

如何更改脚本的一部分的 awk 分隔符?

从 shell/命令提示符运行 MySQL 脚本时,空格会更改分隔符

db2 对字符串进行分隔(分隔符为逗号),并计算分隔得到的数组的长度,不写自定义函数,如何做到?

使用python在csv中更改分隔符

db2递归一个以分隔符隔开的字段

如何编写 DB2 选择查询以在“-”分隔符之前包含字符串