2010-11-18 12 views
1

春から(or Hibernate経由で)oracleストアドプロシージャを呼び出す必要があります。spring&plsqlストアドプロシージャ - 例外処理とトランザクション

私はPL/SQLに精通していないので、進める方法を知りたいと思います。

1)トランザクションを開始/終了するためにスプリング/ハイバネート(例:注釈)を使用できますか?私はそれが問題ではないと仮定し、私はストアドプロシージャ内で開始/終了する必要はありません。

2)に述べた手順では、私が開いてカーソルを閉じますが、例外の場合には、私はそれを閉じて、Javaの部分に例外を再スローしたいんだ、だからここに私がやったものだ:

EXCEPTION 
    WHEN OTHERS THEN 
    CLOSE my_cursor; 
    RAISE e_cannot_do_sth; 

私は何かが間違っていたことをユーザーに知らせるために例外を発生させたいと思っています...

どうすればいいですか?

答えて

1
  1. はい、Springを使用してトランザクションを管理できます。私は、Hibernateがあなたに多くのエッジを与えるとは思わない。

  2. 次使用、例外をスローする:errnoは-20000と-20999間の数である

    raise_application_error(errno, 'Error Message of your choice');

を。次に、あなたのJavaコードで、次のようにルートSQLExcectionを引き出し、org.springframework.jdbc.UncategorizedSQLExceptionをキャッチ:

private SQLException digOutSqlException(UncategorizedSQLException t) { 
    Throwable root = t; 
    while (root.getCause() instanceof SQLException) { 
    return (SQLException)root.getCause(); 
    } 
    return null; 
} 

を、カスタムエラーPL/SQLエラー番号を取得するのSQLExceptionにgetErrorCode()を呼び出します。

関連する問題