mysql从java创建SQL函数导致异常
我正在尝试使用Java中的JDBC创建一个数据库
DB和表的创建很容易,但是现在我需要创建函数,然后创建触发器,我不断地遇到异常,例如这个函数:
USE ratercases;
DROP FUNCTION IF EXISTS `IMC`;
DELIMITER $$
CREATE FUNCTION `IMC` (altura INT,peso INT)
RETURNS DOUBLE
BEGIN
DECLARE AltM DOUBLE;
DECLARE AltSqr DOUBLE;
SET AltM=(altura/100);
SET AltSqr=AltM*AltM;
RETURN peso/AltSqr;
END $$
DELIMITER ;
如果我在MySQL Workbench上运行上面的脚本,就不会有问题;然而,从Java运行它会导致SQL语法错误异常
我使用以下Java代码:
// ps is a SQL Statement; ratercases is the target Database;
ps.execute("USE ratercases;"
+ "DROP FUNCTION IF EXISTS `IMC`;"
+ " DELIMITER $$"
+ " CREATE FUNCTION `IMC` (altura INT,peso INT)"
+ " RETURNS DOUBLE"
+ " BEGIN"
+ " DECLARE AltM DOUBLE;"
+ " DECLARE AltSqr DOUBLE;"
+ " SET AltM=(altura/100);"
+ " SET AltSqr=AltM*AltM;"
+ " RETURN peso/AltSqr;"
+ " END $$"
+ " DELIMITER ;");
//
Java/SQL显然在分隔符$$方面有问题
谁能启发我吗
谢谢
# 1 楼答案
另一种方法是,通过在连接URL中指定ratercases数据库,直接连接到该数据库,然后为
DROP
和CREATE
执行两个单独的语句,完全避免使用DELIMITER
的要求: