안녕하세요
테이블에 BANo 라는 테이블을 만들어 놓고 아래와 같은 프로시저를 호출해서 채번을 하고 전표를 입력하도록 했습니다.
그런데 "가끔씩" 전표번호가 같다고 PK 에러가 납니다.
그렇다면 프로시저가 동일번호를 뱉어냈다는 얘긴데...
어디가 문제인지 모르겠네요....
실행 예) EXEC SP_채번 'AB'
---- 아래는 SP_채번 프로시저 ----
BEGIN TRAN
SET NOCOUNT ON;
DECLARE @NoTp NVARCHAR(20), @_YY NCHAR(2), @_MM NVARCHAR(2), @_Seq_Num NVARCHAR(20)
SELECT @_YY = RIGHT(DATEPART(YY, GETDATE()), 2), @_MM = RIGHT('00'+CAST(DATEPART(MM, GETDATE()) AS NVARCHAR), 2)
SELECT @_Seq_Num = @NoTp + @_YY + @_MM + CAST(RIGHT(CAST(RIGHT(Seq_Num, 6) AS INT) +10000001, 6) AS NVARCHAR)
FROM BANo
WHERE NoTp = @NoTp AND Seq_Num LIKE @NoTp+@_YY+@_MM +'%'
IF @_Seq_Num IS NULL
SET @_Seq_Num = @NoTp+@_YY+@_MM+'000001'
UPDATE BANo SET Seq_Num = @_Seq_Num WHERE Notp = @NoTp
IF @@ROWCOUNT = 0
INSERT INTO BANo (NoTp, Seq_Num) VALUES( @NoTp, @_Seq_Num)
SELECT @_Seq_Num AS NewNo
SET NOCOUNT OFF;
COMMIT;
일단 999999에서는 000000 이되어 중복은 발생할수도 이문제는 아닐것 같구요...
@NoTp는 아규먼트인가요 내부 선언 인가요.. 값이 없어서 ?