我有一个包含多个if-elseif- else
语句的存储过程。当我尝试删除此if elseif
语句并仅执行该查询的单个部分时,它会非常快地返回结果,但是当使用if-elseif
case语句将此查询与多个其他查询一起使用时,则需要太多时间...
例如:
if @Status = 1
begin
select .....
end
else if @Status = 2
begin
select .....
end
else if @Status = 3
begin
select .....
end
else if....
此存储过程中还有更多else if
语句。
答案 0 :(得分:0)
虽然它可能出现在某些“不要这样做”的书中,但您可以尝试为每个status
值创建一个存储过程,并通过构建动态TSQL语句直接调用它("exec yourproc_" + statusValue
)。
create proc youproc_1 as
begin
select your_data_for_status1;
end;
create proc youproc_2 as
begin
select your_data_for_status2;
end;
等...
答案 1 :(得分:-2)
USE [YourDB]
GO
CREATE PROCEDURE dbo.NameOfStorageProcedure @Status int
AS
if(@Status = 1)
begin
SELECT some
FROM DB
return
end
if(@Status = 2)
begin
SELECT Some
FROM DB
return
end
GO