1

SQLPlusで次のステートメントを実行できます

CREATE OR REPLACE TRIGGER TEST.RECORD_TABLE.BIR
BEFORE INSERT ON TEST.CURRENT_VACANCIES
FOR EACH ROW WHEN (new.VACANCY_ID IS NULL)
BEGIN 
   SELECT TEST.CURRENT_VACANCIES_SEQ.NEXTVAL INTO :new.VACANCY_ID FROM dual; 
END;

そしてそれは完全に中華なべです。

ただし、Javaアプリでプリペアドステートメントから呼び出そうとすると、次のエラーが発生します。

SQL例外;java.sql.SQLException:インデックスにINまたはOUTパラメータがありません:: 1

誰かアイデアはありますか?

ありがとう

4

1 に答える 1

5

PreparedStatement インターフェイスを使用して、:NEW または :OLD 列を参照するトリガーを作成しないでください。代わりにステートメントを使用してください。PreparedStatement を使用すると、java.sql.SQLException: Missing IN or OUT parameter at index:: 1 というメッセージで実行が失敗します。

参照: http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraint.htm#CHDIIDBE

使用する:

session.doWork(new Work() {
    @Override
    public void execute(Connection connection) throws SQLException {
        //connection, finally!
    }
});

from: hibernate セッションから jdbc 接続を取得するには?

于 2012-08-24T06:31:54.300 に答える