2011-06-13 9 views
1

データベースの列のデータ型のオーバーフローをチェックする方法を質問したいと思います。SQL - データ型のオーバーフローをチェックする方法

ここに私がSQLに入れる必要のあるテキストがあります。

が答えてくれてありがとう「の値が列のデータ型の区間の外にあるときにオーバーフローが起こりました」。データベースアプリケーションで

+0

どのデータベースが何をしているのですか?オーバーフローが発生する可能性があります –

+0

int?日付時刻?テキストの長さ? – gbn

+0

ストアドプロシージャでtry catchステートメントを使用します。 – neo

答えて

2

このような何かが、SQL Serverのために働くだろう...

DECLARE @userInput NVarChar(100) = '129387918279387987123123'; 
DECLARE @value Int; 

BEGIN TRY 
    SELECT @value = CONVERT(Int, @userInput); 
END TRY 
BEGIN CATCH 
    PRINT 'Overflow happend when the value is out of interval of column''s data type'; 
END CATCH; 
1

、オーバーフローから(コードで回復するために)自動的に回復する何か良い方法は本当にありません。トランザクションをロールバックする必要があります。

したがって、サーバーが発生するオーバーフローエラーをトラップしてから、ロールバックするか、エラーを再度発生させて、他のモジュールがロールバックできるようにする必要があります。私は実際にそれをすることのポイントが表示されませんが、私は何かが不足している可能性があります。

何か不足していますか?

+0

これは私たちのスクリプトの中の解決策ですが、私は本当にそれを理解していません。私はこれに初心者です。 – joseph

+0

from data_stage_tmp.gc_currency_quotes abs(spot_ask)> =キャスト(小数点(9,7)として99999.9999999); – joseph

+0

私はそのテーブルをフィードする前に、チェックオーバーフローフィールドを持つ別のテーブルからいくつかのテーブルをフィードし、それを使って行を削除する必要があります – joseph

関連する問題