• 締切済み

【SQLServer】例外処理・意図的に例外エラーを発生させる

お世話になってます。 現在、共通スカラ関数を作成しており、想定外の引数を与えられた場合は エラーにしたいと思っています。 SQLServerでは、意図的に例外エラーを発生させることが可能なのでしょうか? Oracleですと、「RAISE」という構文がありそれを使用しますが 変わるようなものを探してみたところ、あまりメジャーでないのか、 やり方がよくわかりませんでした。 SQLSERVERについて詳しい方教えていただけませんか? よろしくおねがいします。

みんなの回答

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.4

そうなんですよね。 SQL Serverの関数ではエラーを発生させることが出来ないのですよね。 内部でエラー分岐のTRY...CATCHも出来無かったかな? 私はこのような場合、戻り値を文字列してエラーメッセージを返します 数値の場合も文字列にして返し読み込んだアプリで数値か文字列かの判断 ただ数値の場合、帳票で使う場合を考えNullで返す場合が多いかも ここからは私的見解。 ストアドと違い関数はSelectの計算カラムとして使われるからエラーを起こすと逆にまずいような気がします。 データーが読めなくなるわけで・・・ Select自身を止めてしまうのは問題あると思いますからね。

mamiyak
質問者

お礼

そうですね。。 結局わたしもnullで返すことにしました。 (引数不正により計算不可能だった、という解釈で使用してもらいます。) ありがとうございました。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

#1です。そうですか。半端な知識でレスしてしまい失礼しました。

mamiyak
質問者

お礼

とんでもないです。助かりましたよ~ ありがとうございました。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

スカラー/テーブル関数でRAISERRORは使えません。 SQL Server 2008のCDC(変更データキャプチャ)のシステム関数でも、RAISERRORが切れないため、内部的に無理やりエラーを発生させることにより、変なエラーメッセージが返るという例があります (変なメッセージでも出さないよりはいいでしょう、という趣旨がMSDNに書いてありました) それを考えてもスカラー関数で想定したエラーメッセージを発生させるのは難しいと思います。

mamiyak
質問者

お礼

ありがとうございます。 なるほど。。 なかなか不細工な仕様ですね。。。凹 無理だということがわかって悩みが解決されました。 ありがとうございました。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1
mamiyak
質問者

お礼

ありがとうございます。 ご紹介いただきましたページ、役に立ちました。 確かに関数内では使用できませんでしたが別の箇所で使用しました♪

関連するQ&A