![](/img/trans.png)
[英]How to declare a nullable guid as an optional parameter for a C# CLR stored procedure with SQL Server
[英]SQL Server : stored procedure to have optional parameter
我們如何為存儲過程指定默認參數?
我已經看到以下兩個選項。
選項1:
CREATE PROCEDURE myProcedure(@dataOne INT, @dataTwo INT = DEFAULT)
選項2:
CREATE PROCEDURE myProcedure(@dataOne INT, @dataTwo INT = 3)
我在C#代碼的某些地方使用了一個帶有一個參數的存儲過程。 現在,我想將其與一個可選參數一起使用。 我想確保可選參數也將具有默認值。
有什么幫助嗎? 我哪里出問題了?
我使用了以上兩種方法。 但這沒有用。 我沒有得到默認值。
僅當您根本不發送該參數時,才使用該參數的默認值。 如果要使用默認值,請不要從后面的代碼中發送參數。 使用CREATE PROCEDURE myProcedure(@dataOne INT,@dataTwo INT=3)..
並且不要從后面的代碼發送@dataTwo
,則將使用3作為默認值。 希望能有所幫助。
如@Shaminder S Aujla所述,僅當不傳遞值時才使用默認值。
演示測試代碼:
建立程序
CREATE PROCEDURE [dbo].[myProcedure]
@dataOne Int
,@dataTwo Int = 3
As
Begin
Set Nocount On;
----TSQL Statements
----TODO: remove after 'optional parameter works perfectly' get confirmed
----testing optional parameter from MSSQL Management Studio itself
Select @dataOne As CompulsaryParameterValue
,@dataTwo As OptionalParameterValue
End
測試程序
---- testing with default value
Exec dbo.myProcedure @dataOne = 5;
---- testing with passed value
Exec dbo.myProcedure @dataOne = 5, @dataTwo = 7;
測試完成后刪除程序
---- drop as testing done.
Drop Procedure dbo.myProcedure;
代替在CREATE PROCEDURE命令中為參數設置默認值,而是在單獨的SQL語句中設置值。 該SQL語句將包含在您的存儲過程定義中。
CREATE PROCEDURE myProcedure(@dataOne INT,@dataTwo INT)
AS
IF(@dataTwo IS NULL OR @dataTwo = '')
BEGIN
SET @dataTwo = 3 --(your default value)
END
優點:如果您要對'@dataTwo'參數使用默認值以外的其他值,則無需再次擔心更改存儲過程的定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.