我正在創建一個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
優化,第一個看起來像可以使用索引,你能詳細說明什麼情況下的執行是不同? –