2015-10-29 33 views
0

我有一個接受10個參數的存儲過程。我想在執行另一個存儲過程時發送一些這些參數。我怎樣才能做到這一點?將參數發送到SQL Server中的存儲過程的選項

存儲過程定義:

create PROCEDURE [dbo].[SP_name] 
    @p1 int = null, 
    @p2 int = null 
    .. 
    .. 
    @p10 int = null 

執行語句:

exec SP_name valueForP2,vlaueForP5..; 

有什麼,爲什麼要告訴exec語句只取一些變量?

+0

附註:您應該**不要**爲存儲過程使用'sp_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並使用別的東西作爲前綴 - 或者根本沒有前綴! –

回答

2

您可以在調用過程時指定參數名稱,其他參數將使用默認值。

create PROCEDURE [dbo].[SP_name] 
    @p1 int = null, 
    @p2 int = NULL, 
    @p10 int = NULL 
AS 
    SELECT @p1, @p2, @p10 

GO 

-- Execute using named parameters 
EXEC [SP_name] @p1 = 1, @p10 = 5;