提问人:Nauman Khan 提问时间:7/6/2023 最后编辑:marc_sNauman Khan 更新时间:7/6/2023 访问量:44
WHILE 循环在 SQL Server 中的存储过程中不起作用
WHILE loop not working in a stored procedure in SQL Server
问:
我在脚本中有多个代码块,每个代码块都根据输入参数执行。
我创建了以下存储过程:
CREATE PROCEDURE [usp_Auto_Extraction_Parameterized]
@data nvarchar(30)
AS
BEGIN
WHILE (@data = '1')
BEGIN
SELECT * FROM abc
END;
WHILE (@data = '2')
BEGIN
SELECT * FROM xyz
END;
WHILE (@data = '3')
BEGIN
SELECT * FROM def
END
END
执行存储过程后的预期结果如下:
EXEC [usp_Auto_Extraction_Parameterized] @data = '3'
是只应该执行最后一个代码块,但这里三个块都被执行了。
我做错了什么?请帮忙!
答:
3赞
Jakob_NS
7/6/2023
#1
您可以尝试使用 IF 语句而不是 WHILE。这应该可以解决您的问题:
CREATE PROCEDURE [usp_Auto_Extraction_Parameterized] @data nvarchar(30)
AS
BEGIN
IF (@data = '1')
BEGIN
SELECT * FROM abc
END
ELSE IF (@data = '2')
BEGIN
SELECT * FROM xyz
END
ELSE IF (@data = '3')
BEGIN
SELECT * FROM def
END
END
评论
@data
WHILE
IF
if
while
IF
WHILE