Kei*_*ell 1 sql-server stored-procedures
我正在创建一个SQL Server存储过程。这SELECT是我正在构建的简单查询。参数之一是寻找标志参数。如果该参数留空,则SELECT默认应为完全不包含该WHERE子句。
CREATE PROCEDURE sprocA
@flagInd int
AS
BEGIN
SELECT intID, strQuestion, strAnswer, intCategory, intOrder
FROM tblA
-- Right here is where I am looking for the logic of the @flagInd to be evaluated.....
-- if @flagInd = 1 then 'WHERE flgInd=1'
-- else if @flagInd=0 then 'WHERE flgInd=0'
-- else if @flagInd IS NULL then ''
Run Code Online (Sandbox Code Playgroud)
这只是一个简单的查询,也是我的一个简单想法,不确定是否可以在不嵌套和重写整个SELECT语句作为IF语句的一部分的情况下完成此操作。
可以这样完成:
SELECT intID, strQuestion, strAnswer, intCategory, intOrder
FROM tblA
WHERE flgInd = @flgInd OR @flgInd IS NULL;
Run Code Online (Sandbox Code Playgroud)
您还可以使用一个CASE表达式:
SELECT intID, strQuestion, strAnswer, intCategory, intOrder
FROM tblA
WHERE CASE
WHEN flgInd = @flgInd THEN 1
WHEN @flgInd IS NULL THEN 1
ELSE 0
END = 1;
Run Code Online (Sandbox Code Playgroud)