2015-10-29 31 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;