ストアド プロシージャで複数の更新ステートメントを使用する場合に戻り値を処理する最良の方法は何ですか。
このストアド プロシージャをデータ アダプタで使用しており、更新結果の合計を取得しようとしています。
SQL Server 2008と .NET 4.5を使用しています
例えば:
CREATE PROCEDURE [dbo].[usrsp_MessageConversation_delete]
(
@fromMbrID int,
@toMbrID int
)
AS
BEGIN
SET NOCOUNT OFF;
UPDATE mbr_Messages
SET fromDeleted = 1
WHERE (fromMbrID = @fromMbrID) AND (toMbrID = @toMbrID)
UPDATE mbr_Messages
SET toDeleted = 1
WHERE (fromMbrID = @toMbrID) AND (toMbrID = @fromMbrID)
//RETURN TOTAL NUMBER OF UPDATED RECORDS
EG: RETURN @@ROWCOUNT ??
END
更新されたレコードの総数を返すか、更新されていない場合は 0 を返します。
他のエラー処理を追加する必要がありますか? もしそうなら、何か提案はありますか?
更新:私はこれで行きました:
BEGIN
SET NOCOUNT ON;
DECLARE @rowCounter INT;
BEGIN TRY
UPDATE
mbr_Messages
SET
fromDeleted = 1
WHERE
(fromMbrID = @fromMbrID) AND (toMbrID = @toMbrID) AND (fromDeleted = 0);
SET @rowCounter = @@ROWCOUNT;
UPDATE
mbr_Messages
SET
toDeleted = 1
WHERE
(fromMbrID = @toMbrID) AND (toMbrID = @fromMbrID) AND (toDeleted = 0);
SET @rowCounter = @rowCounter + @@ROWCOUNT;
END TRY
BEGIN CATCH
PRINT 'Update failed';
END CATCH
RETURN @rowCounter
END