我编写了一个存储过程来从我的应用程序的表中获取数据。现在我需要使用另一个条件查询相同的列。我使用IF ELSE
来解决我当前的存储过程就是这个问题的问题
ALTER PROCEDURE [dbo].[sample]
@flag INT=1
AS
BEGIN
SET NOCOUNT ON;
IF(@flag = 1)
BEGIN
SELECT
item1, item2, item3
FROM
table1
WHERE
(my first condition)
END
ELSE
BEGIN
SELECT
item1, item2, item3
FROM
table1
WHERE
(my second condition)
END
END
当前的存储过程工作正常,但如果我需要另一列或者我需要删除一列它很脏,我必须这样做两次。
有没有办法优化这个存储过程?我是SQL的新手,这是我的第一个存储过程。请帮忙
答案 0 :(得分:2)
你可以这样:
SELECT item1,item2,item3
FROM table1
WHERE
(@flag = 1 and 'my first condition') OR
(@flag != 1 and 'my secondcondition')
答案 1 :(得分:0)
您可以使用CASE
SELECT item1, item2, item3
FROM table1
WHERE
CASE
WHEN @flag = 1 AND 'my first condition' THEN 1
WHEN @flag != 1 AND 'my second condition' THEN 1
END = 1