2011-07-19 8 views
0

ここにTSQL。具体的にストアドプロシージャに関するSQL SELECT文はいつ例外をスローしますか?

Server 2008の(文字通りアップグレード):/試してみてください私は、SELECT文が例外をスローしますとき例リストを作成しようとしていた

キャッチ。私が考えることができるのはシンタックス関連(ヌル変数を含む)とゼロで割ることです。私はInsert/AlterCreate/Truncateのためのそれらの全体のボート負荷だけがあると推測しています。

良いソースリンクを知っていれば、それは素晴らしいことです。

この質問は、SQLサーバーのエラー処理に関するこの包括的なブログの記事を読んでいたときに出てきました。 SQL Server 2000のタイトルですが、そのほとんどはまだ適用されていると思います。

編集

は申し訳ありませんが、私はこれ以前にリンクするためのもの。 。 。コンパイル( "didntの」実行")エラーの外

http://msdn.microsoft.com/en-us/library/aa175920(v=sql.80).aspx

+0

徹底的なブログ記事へのリンクを含めるといいかもしれません。 –

+0

SQL Server 2000でTRY/CATCHについて読んだことはありません。これはSQL Server 2005で導入されました...そして、あなたはhttp://www.sommarskog.se/error_handling_2005.htmlを意味しますか? – gbn

+0

ええ、私はそのリンクを含めるのを忘れました。@gbn:ええ、私がリンクしているブログ記事は、if/elsesの束を持っています。私はtry/catchとそれを調和させるつもりでした。主に、私は処理したくない例外をキャッチしたくありません。 – surfasb

答えて

1

、さまざまなSETステートメント
に基づいて少なくともこれらのランタイムエラー

  • 算術エラー
    これらの変更を持っています例:get sql server to warn about truncation/rounding

  • オーバーフローエラー
    例:行の1つは、いくつかの計算でSMALLINTをオーバーフロー

  • CASTエラー
    例えばあなたがWHEREまたはCASEでISNUMERICを試してみて、
    Why use Select Top 100 Percent?

  • を参照してくださいintに 'ボブ^' または1.23をキャストしてみてください

しかし、あなたはいつもTRY/CATCHを使用したいと思いますが、確かに...?

+0

そのリンクは本当に良かったです。 SQL /ストアドプロシージャの構文とsematicsはあまり複雑ではないので、適切なエラー処理の学習に少し時間をとるつもりです。 – surfasb

+0

@ surfasb:ここで私の答えを見てください。あなたは、読み取り専用procsのトランザクションのものを削除することができます。 http://stackoverflow.com/questions/2073737/nested-stored-procedures-containing-try-catch-rollback-pattern/2074139#2074139また、ほとんどのフォークは個々のエラーをキャッチする傾向がありません。それは失敗するか、実行されます。次のようなパターンが必要な場合を除き、http://stackoverflow.com/questions/3593870/select-insert-version-of-an-upsert-is-there-a-design-pattern-for-high-concurre/3594328#3594328 (ネストされたtry/catch) – gbn

1

gbnの投稿に加えて、ロック待ちタイムアウトやデッドロックなどのロックエラーを取得することもできます。

#Tempテーブルを参照している場合、文が実行されるまでバインドされていないため、無効なオブジェクト名 '#Temp' "エラーが発生する可能性があります。

READ UNCOMMITTEDまたはWITH(NOLOCK)の場合は、エラーが発生する可能性があります。601 - 「データ移動のためにNOLOCKでスキャンを続行できませんでした」

コードで.NETコードが実行されている場合は、そこから例外が発生する可能性があります。

コードがリモートサーバーから選択された場合、接続に関するさまざまなエラーが発生する可能性があります。

+0

リモート接続で**何か**を行うと、すべてのベットがオフになります。 。 。 – surfasb

関連する問題