WinFormから渡された行番号に従って行を削除したい。もちろん、ROW_NUMBER()
行を削除すると計算の出力は常に更新されるため、行番号も変更されるため、ループではなく一発で実行したいと考えています。
私はこのコードを持っています:
CREATE PROCEDURE Delete_Record (@RowNum INT)
AS
;WITH REC_ROW AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY [Record Number]) AS RN
FROM User_Data
)
DELETE
FROM REC_ROW
WHERE RN IN (@RowNum)
そして、私が入力すると:
exec Delete_Record @RowNum = '1,2'
次のエラーが発生します。
データ型 varchar を int に変換中にエラーが発生しました。
に変更@RowNum INT
すると@RowNum varchar(max)
、次のエラー メッセージが表示されます。
データ型 varchar を bigint に変換中にエラーが発生しました。
値をハードコーディングすると:
;WITH REC_ROW AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY [Record Number]) AS RN
FROM User_Data
)
DELETE
FROM REC_ROW
WHERE RN IN (1,2)
行 1 と 2 が正常に削除されます。問題は、これをストアド プロシージャに統合し、句'1,2'
に渡すように入力するにはどうすればよいかということです。IN