更改 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 脚本中的分隔符的主要内容,如果未能解决你的问题,请参考以下文章
从 shell/命令提示符运行 MySQL 脚本时,空格会更改分隔符