0
對不起,我的標題非常清晰。我試圖創建一個存儲過程:將變量設置爲某個值或默認設置爲列中的所有值
Create Procedure Pro1 @a nvarchar = null, @b nvarchar =null
as
Select * from table1
where Parameter1 = '1'
and Parameter2 = @a
go
上面不是實際的代碼,但我希望它解釋了我想實現的。我選擇了兩個參數。 '參數2'取決於變量@a。我面臨的挑戰是,如果@a在執行時保持爲空;我希望select語句在Parmeter2的所有值上搜索,就好像'和'語句不在那裏一樣。我可以編寫一個if else語句來執行不同的選擇,但是我希望我可以簡單地將@a設置爲通配符值的某種 ,這只是簡單地做到這一點?也許有些事情:'像[]'?
簡單的答案:AND(Parameter2 = @a OR @a IS NULL)'。如果這太複雜了,可以使用動態SQL來發現更好的性能,只用相關的子句構建語句。 –
此外,[停止聲明變長數據類型無長](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length的.aspx)。抱歉大叫,但我不明白爲什麼這麼多人這麼懶。 –
其實在代碼中我已經包含了長度,我只是忘了在這個例子中包含它們。 – Arantuath