需要構建一個返回數據的存儲過程。 在客戶端,我有一個複選框,用於選擇一個值是否應爲null。MS SQL將參數傳遞給存儲的proc指示值爲空或非空
讓我們說列名稱是包。
Create PROCEDURE [dbo].[up_query_wt_paketsuche]
(
@packagenull int = 0
)
AS
(
SELECT * FROM PACKAGES
where ???
)
所以我通過1爲@packagenull如果查詢應返回該包裝不空,什麼都值如果查詢應返回的所有值,其中包是空的。重點是處理where子句中的參數。 真正的存儲過程更復雜,12個參數,兩個表上的聯合...所以我想處理where子句中的參數。
謝謝。
編輯: 我的表格不是單個表格。 這裏是我的實際凡未經@packagenull
where f.vtyp6maske like @vtyp
and f.marke like @marke
and h.mkb like @mkb
and (
modjahr_von = @modelljahrvon
or
( @modelljahrvon=999999
and (modjahr_von is null or modjahr_von is not null)
)
)
and (modjahr_bis = @modbis
or (
@modelljahrbis = 999999
and (modjahr_bis is null or modjahr_bis is not null)
)
)
and i.prnr like @prnr
你的where子句是可怕的,低效率和非常多餘的,這對於sql服務器沒有任何意義modjahr_von爲null或modjahr_von不爲空「,但sql server將不得不做很多工作來檢查條件。 –