我使用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命令终止符的正确语法是什么?
2条答案
按热度按时间mbskvtky1#
命令终止符是连接到数据库而不是数据库本身的程序的一个功能。数据库完全不知道SQL文件的存在,例如,该文件具有由分隔符分隔的多个命令。SQL编辑器或客户机是处理这些命令的地方。
现在,你正在编写一个连接到数据库的程序,所以如果你想运行多个命令,你必须自己管理它。JDBC和其他数据库驱动程序为你提供了一个执行单个命令的接口。你只需要为你想运行的每个命令使用这个接口。
如果您确实希望能够通过JDBC的单个调用一次执行一组命令,请将它们放在存储过程中,或者使用类似
BEGIN ATOMIC...END
的命令。raogr8fs2#
我认为这个问题还没有得到真正的回答,因为列奥纳多试图做的是完全正确的:通过JDBC提交CREATE PROCEDURE的单个DDL语句,但是JDBC包括例程主体,该例程主体在过程内具有多个语句。
您可以参考官方的DB2示例,了解如何提交这个文件。它是针对触发器的DDL,但也适用于例程的DDL:
Source code sample "TbTrig.java"