
ストアドプロシージャ内で@@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 コンマ(,)を含むデ...
-
ACCESS ADOでupdateが効かない
-
SQL実行エラー時にロールバック...
-
エクセルマクロで指定範囲内の...
-
GROUP BYでエラーが発生
-
CSV出力時、件数によりエラーと...
-
エクセルからSQLサーバー ...
-
何も表示されない実行時エラー...
-
DB2でselectは出来るが、update...
-
ACCESS2000ディスクまたはネッ...
-
MySQLの不可解なエラー
-
PostgreSqlでFunctionの作成に...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
Excel-VBAの「しばらくお待ちく...
-
99bb.com のライセンスバック...
-
新規saの作成方法について
-
SQLSERVER2005のSSASに匿名認証...
-
Transact-SQLでテキストファイ...
-
Excelフィルタ抽出で「検索して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
PostgreSqlでFunctionの作成に...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
GROUP BYでエラーが発生
-
エクセルマクロで指定範囲内の...
-
何も表示されない実行時エラー...
-
エクセルのグループボックス枠...
-
sqlで文字列を最後に追加したい
-
エクセルからSQLサーバー ...
-
ACCESSで作成したアプリケーシ...
-
クエリの存在チェック
-
Access2000環境に対応するMid関...
-
複数の表の外部結合について
-
SQLServerが存在しないか、アク...
-
自作関数を含んだクエリをエク...
-
SQLServer・ストアドプロシージ...
-
SQLserverのIF文について
おすすめ情報