【发布时间】:2014-09-28 01:29:46
【问题描述】:
我在使用 JDBC 准备语句执行以下操作时遇到问题:
CREATE OR REPLACE TRIGGER Time_trg BEFORE INSERT ON Time FOR EACH ROW
BEGIN
SELECT Time_seq.NEXTVAL INTO :new.id FROM dual;
END;
代码:
try {
PreparedStatement statement = connection.prepareStatement( sql );
preparedStatement.executeUpdate();
} finally {
statement.close();
}
我收到此错误:
java.sql.SQLException: Missing IN or OUT parameter at index:: 1
我正在研究与数据库无关的解决方案,因此我需要一些可移植的东西。那么oracle的问题是什么?
【问题讨论】:
-
问题是 PreparedStatement 的命名参数语法与 Oracle 的 :new 语法冲突,PreparedStatement 中的命名参数无法转义。所以你用 Statement 而不是 PreparedStatement 来颠覆这个小问题。