簡體   English   中英

具有非必需參數的SQL StoredProcedure

[英]SQL StoredProcedure with non required parameters

在我的應用程序中,我有一個包含一些過濾器字段的表單。 不需要任何內容​​,如果用戶確實輸入了值,則需要在where子句中將其作為參數提供。

我不知道如何在存儲過程中處理此問題。

例如以下存儲過程:

--parameters
@customername varchar(50),

SELECT * from ORDERS
WHERE customername = @customername

因此,如果用戶輸入客戶名,那么它當然會返回該客戶名的所有內容,如果用戶未輸入用戶名,則需要返回所有內容。 如何在此聲明中執行此操作? 如果用戶未輸入客戶名稱,是否可以通過通配符? 還是我需要一個單獨的程序。 我希望這是有道理的,謝謝!

嘗試這個

--parameters
@customername varchar(50) = NULL,

SELECT * from ORDERS
WHERE customername = COALESCE(@customername, customername)

根據您需要返回null的客戶名的注釋,這與Russ'集成在一起。

SELECT * from ORDERS
WHERE (customername = COALESCE(@customername, customername)
 OR customername IS NULL)
SELECT * from ORDERS 
WHERE customername = @customername or @customername is null

請參閱此鏈接,以了解一些想法以及使用條件where語句的不同方法的利弊:

http://www.sqlservercentral.com/articles/T-SQL/61918/

您可以在存儲的過程中編寫if語句。 像這樣。

IF @customername is null
BEGIN
  SELECT * FROM ORDERS
END
ELSE
BEGIN
  SELECT * FROM ORDERS WHERE customername = @customername
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM