Date: Mon, 20 May 2002 16:07:18 +0900
From: "Takahashi Kazuhiko" <who@example.co.jp>
はじめまして。高橋 と申します。
堀川氏の【SQLServer7.0/MSDE】の上下巻を購入し、勉強をし始めたばかりの
SQLの初心者です。よろしくお願いします。
INSERT や DELETE を実行して、成功したか 失敗したか どうかを
グローバル変数 @@error と @@rowcount を用いて判定したいと考えています。
具体的には、@@error の値を見て, 0 なら、@@rowcount が 予定通りの値で
あるかどうかをチェックしたいと考えています。
困っている点は、@@error の 値を取得すると @@rowcount の値が変化して
しまう事です。この点を回避する方法を ご存知の方、アドバイスを
お願いいたします。
---------------------------------------
-- サンプル コード
--
-- 開発環境 :
-- MSDE2000 + Windows2000Professional
--
SET NOCOUNT ON
-- テーブルを作成する。
--
CREATE TABLE Test001
(
UserId
int
NOT NULL,
Name
varchar(100)
NOT NULL
)
GO
declare @errorValue int
declare @rowcountValue int
-- 宣言した変数に初期値を代入する。
set @errorValue = -1
set @rowcountValue = -1
-- 新規テーブルに、7 件 追加する。
insert into Test001 values( 1, 'takahashi' )
insert into Test001 values( 2, 'ando' )
insert into Test001 values( 3, 'suzuki' )
insert into Test001 values( 4, 'sato' )
insert into Test001 values( 5, 'ogawa' )
insert into Test001 values( 6, 'arakawa' )
insert into Test001 values( 7, 'yoshida' )
-- テーブルの中身を削除する。
DELETE FROM Test001
-- @@error と、@@rowcount を同時に取得したい。
-- @@error = 0 , @@rowcount = 7 になるはず。
/*
Print '(@@error), (@@rowcount) '
+ CAST(@@error As varchar(10)) + ' // '
+ CAST(@@rowcount As varchar(10))
*/
-- グローバル変数の値を 宣言しておいた変数に保存する。
set @errorValue = @@error
set @rowcountValue = @@rowcount
-- 保存した変数を表示する。
Print '(@errorValue), (@rowcountValue) '
+ CAST(@errorValue As varchar(10)) + ' // '
+ CAST(@rowcountValue As varchar(10))
-- ==> @errorValue = 0 , @rowcountValue = 1 になってしまう。
-- @@errorValue = 0 , @@rowcountValue = 7 であってほしい。
-- テーブルを削除する。
DROP TABLE Test001
-----------------------------------------
開発環境 : SQL2000 + Win2000Pro + VC6
高橋 和彦
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|