我正在创建一个SQL Server存储过程。这是我正在构建的一个简单的SELECT
查询。其中一个参数是查找标志参数。如果该参数留空,那么SELECT
应默认为不具有WHERE
子句。在SQL Server中使用条件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 ''
这只是一个简单的查询和简单的我想过,不知道这是否可以被嵌套没有完成,重写整个SELECT
语句的IF语句的一部分。
不知道为什么添加'CASE'是复杂的事情。 –
@JuanCarlosOropeza因为在很多情况下,它的第一个选项的执行计划可能不如“CASE”表达式 – Lamak
优化,第一个看起来像可以使用索引,你能详细说明什么情况下的执行是不同? –