
ストアドプロシージャ内で@@ERRORと@@ROWCOUNTを併用で使用しています。下記URLでは問題ないかの様に記述されていますが、当方の環境では×です。下記の様なストアドです。
declare @errNo int
insert into ~
set @errNo = @@ERROR
if ( @errNo <> 0 )
return @errNo
if ( @@ROWCOUNT = 0 )
return 100
上記では、insert時のエラーは取得でき、@@ROWCOUNTは正常に1件挿入された場合でも、0が取得され、結果return 100が返される事になります。おそらく、@@ROWCOUNTの前でエラーハンドリングしている為、そこでリセット?されていると思われます。逆に、@@ROWCOUNTのハンドリングをエラーハンドリングより前にすると、今度は@@ROWCOUNTは正常に挿入された数が返ってくるものの、エラーハンドリングはされません。(おそらく、@@ROWCOUNTのハンドリング時に@@ERRORがリセットされる為と思われる。)この様な場合どうすればいいのでしょう?因みに以下のURLではOKらしいですが。。。
http://www.microsoft.com/japan/msdn/library/defa …
No.1ベストアンサー
- 回答日時:
こうしてください。
declare @errNo int
declare @rowcnt int
insert into ~
--↓ここでいっぺんに変数に格納してしまう
select @errNo = @@ERROR,@rowcnt = @@ROWCOUNT
if ( @errNo <> 0 ) --@@ERRORではない
return @errNo
if ( @@rowcnt = 0 ) --@@ROWCOUNTではない
return 100
ありがとうございます!ものの見事にうまくいきました。勉強になりました。それにしても、msdnのURLに記述されている例はなんなんでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
エクセルマクロで指定範囲内の...
-
Oracle 8i コンマ(,)を含むデ...
-
VB6より長文INSERT文でORA1756...
-
ストアドの戻り値(配列)について
-
ACCESS ADOでupdateが効かない
-
Accessで指定のレコードを削除...
-
Access2000環境に対応するMid関...
-
PostgreSqlでFunctionの作成に...
-
何も表示されない実行時エラー...
-
エクセルのグループボックス枠...
-
データベースがアタッチできません
-
SQLserverのIF文について
-
バッチファイルからのBCP起動に...
-
(SQLSERVER) 別サーバーへテー...
-
A5:SQL Mk-2 でレンサバMySQLへ...
-
セキュリティソフト カスペルス...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
SQLで同じDBに対し2つのコネク...
-
ACCESSからのODBC接続のみ応答...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
Access2000環境に対応するMid関...
-
sqlで文字列を最後に追加したい
-
何も表示されない実行時エラー...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
オブジェクト名 '<table>' が無...
-
エクセルのグループボックス枠...
-
エクセルマクロで指定範囲内の...
-
VB6より長文INSERT文でORA1756...
-
SQLServerが存在しないか、アク...
-
エクセルからSQLサーバー ...
-
ACCESSで作成したアプリケーシ...
-
SQLServer・ストアドプロシージ...
-
クエリの存在チェック
-
分散トランザクションを開始で...
おすすめ情報