アプリ版:「スタンプのみでお礼する」機能のリリースについて

今日はJDBCによるストアードプロシージャCALLについてお伺いします。
ストアードプロシージャのCALL文では以下のように宣言しますが、{}は必要なのでしょうか?
con.prepareCall("CALL KRVZZ01Z(?,?)")  ・・・・(1)
con.prepareCall("{CALL KRVZZ01Z(?,?)}") ・・・(2)

どの本にも(2)のように記述してあるのですが、私の環境では(1)でも動きました。
いらないのでしょうか?

環境はDB2とJDK1.3です。
よろしくお願いいたします。

A 回答 (1件)

基本的につけておくことを進めます。


{}はネイティブSQLであることを示すものだからです。
おそらくCallをつかっているとみるとPL/SQLだとおもわれますが、ストアドプロシジャは各DB製品によってまったくちがいます。
{}をつけないとJDBCドライバがSQLの方言の差異を吸収してしまい。ストアドの場合は思わぬ誤動作を起こすことがあります。
ですから、このSQL文は最適化せずにそのままDBまで届けてくださいよという{}があったほうがよいです。
    • good
    • 0
この回答へのお礼

ご丁寧な回答ありがとうございました。
当初はつけないというくくりだったため、危ないところでした。
今後ともよろしくお願いいたします。

ありがとうございました。

お礼日時:2003/02/06 15:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す