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'
그것은 오류 발생 :
Error converting data type varchar to int.
을 내가 @RowNum INT
@RowNum varchar(max)
에 변경하면 다음과 같은 오류 메시지가 나타납니다.
Error converting data type varchar to 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
절에?
어디서 CREATE TYPE dbo.Integers 부분을 넣어야합니까? Create Procedure 부분에 있어야합니까? 나는 그것을 시도하고 그것은 잘못된 구문을 근처에 '('. –
@ CaressCastañares 한 번에 별도의 명령으로 실행합니다. 그것은 당신의 절차 내에서 사용하는'dbo.Integers' 테이블 매개 변수의 "유형"을 설정합니다. –
@Caress 아니요, 저장 프로 시저 내부가 아닌 TYPE * once *를 만듭니다. 테이블을 만드는 것과 같습니다. –