1

我使用 JDBC(com.ibm.db2.jcc.DB2Driver v. 1.4.2)连接到 DB2 数据库。

如果我必须创建一个类似的过程:

CREATE PROCEDURE "Schema".makeUniqueCode(IN keyName VARCHAR(30),IN fieldName VARCHAR(30), IN tableName VARCHAR(30))
LANGUAGE SQL
BEGIN
DECLARE COD VARCHAR(30);
DECLARE LASTCOD VARCHAR(30);
DECLARE at_end INT DEFAULT 0;
...
END%

我需要将 SQL 命令终止符从;更改为新字符...我选择%.

如果我将 create procedure 命令放在 file.sql 中并使用 DB2 CLI(db2 提示符),那么更改 SQL 命令终止符非常简单。

我的问题是我必须通过 JDBC 驱动程序使用远程连接来执行创建过程命令。

使用 JDBC 驱动程序使用远程连接更改 SQL 命令终止符的正确语法是什么?

4

2 回答 2

2

命令终止符是连接到数据库的程序的一项功能,而不是数据库本身。数据库完全不知道 SQL 文件的存在,例如,该文件具有由分隔符分隔的多个命令。SQL 编辑器或客户端是处理这些的地方。

现在正在编写一个连接到数据库的程序,所以如果你想运行多个命令,你必须自己管理。JDBC 和其他数据库驱动程序为您提供了执行单个命令的接口。您只需为要运行的每个命令使用该接口。

如果您确实希望能够通过一次来自 JDBC 的调用一次执行一堆命令,请将它们放在存储过程中或使用类似BEGIN ATOMIC...END.

于 2013-02-08T11:42:03.120 回答
1

我认为这个问题还没有真正得到回答,因为莱昂纳多试图做的是完全有效的:通过 JDBC 为 CREATE PROCEDURE 提交单个 DDL 语句,但是在过程中包含一个带有多个语句的例程主体。

您可以查看官方 DB2 示例如何提交。它适用于触发器的 DDL,但这也适用于例程的 DDL:

源代码示例“TbTrig.java”

于 2016-07-12T07:09:15.573 回答