有我的桌子:
ID code(varchar)
1 006
2 008
3 005
4 010
5 002
我创建了一个存储过程:
CREATE PROC pp
@code VARCHAR(10),
@new_code VARCHAR(10) OUTPUT
AS
BEGIN
SELECT TOP 1 @new_code = RIGHT(1000+code+1,3)
FROM tb AS a
WHERE [Code] >= @code
AND NOT EXISTS (SELECT 1 FROM tb WHERE [Code]=RIGHT(1000+a.[Code]+1,3))
ORDER BY RIGHT(1000+code+1,3)
END
当我在下面调用这个存储过程时,结果是 011,它是正确的:
DECLARE @code VARCHAR(3)
EXEC pp '009', @code OUTPUT
SELECT @code
当我调用下面的存储过程时,结果是011,所以结果是错误的。它应该是“004”。
DECLARE @code VARCHAR(3)
EXEC pp '003', @code OUTPUT
SELECT @code
如何纠正这个?TKS!