SqlServer存储过程传⼊数组参数的处理
并不是真的传⼊array⼀样的数组,⽽是⼀个以逗号分隔的字符串
View Code
/*作业优先级跳到最前⾯*/
ALTER PROCEDURE proc_TaskJumpPriority
(
@ID varchar(100)--多条作业ID如:10,11,12
)
AS
DECLARE@PointerPrev int
DECLARE@PointerCurr int
DECLARE@TId int
SET@PointerPrev=1
WHILE(@PointerPrev<LEN(@ID))
sql 字符串转数组BEGIN
SET@PointerCurr=CharIndex(',',@ID,@PointerPrev)
IF(@PointerCurr>0)
BEGIN
SET@TId=cast(SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev)as int)
PRINT@TId
SET@PointerPrev=@PointerCurr+1
END
ELSE
BREAK
END
--因为最后⼀个ID后⾯没有逗号,所以在跳出循环后获取
SET@TId=cast(substring(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1) as int)
print@TId
GO
--exec proc_TaskJumpPriority '10,20,30'
顺便说⼀下,sql server的存储过程的调试。如上⾯代码所⽰,可以⽤exec执⾏存储过程,在过程中⽤print打印出你想观察的变量。这是和oracle的存储过程调试不同的。我不知道sql server中有没有类似oracle中的断点调试。有知道的童鞋请告知。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。