declare @temp varchar(20)
declare @name varchar(20)
set @name = 'John'
set @temp = 'e'
select * from TableA
where case when @temp = 'e' then [em_name]
case when @temp = 'c' then [company_name]
end
= @name
此查詢給我錯誤(where子句中的非布爾表達式)。動態列名在where子句中
請解釋此查詢中出現了什麼問題,以及如何在沒有動態sql的情況下實現這一點。
所以當我給@temp = 'C'
那麼它應該搜索[company_name] = @name
。並有一長串@temp values(employee name, company name, city name, state name, supervisor name etc)
。
可能重複[參數化存儲過程(http://stackoverflow.com/questions/5916748/parameterised-stored-proc) – 2011-05-09 05:41:48