如何在存储过程中使用可选参数

时间:2010-09-14 13:52:34

标签: sql sql-server

我有一个类似于

的存储过程
  CREATE PROCEDURE Update-all  
 (  @RowID INT,
    @Parameter1 NVARCHAR(50),
    @Parameter2 INT
 )
As
....

我将根据不同的条件传递@ Parameter1 / @ Parameter2。 如果我没有传递@ Parameter1 / @ Parameter2,我收到一个错误,存储过程期望@ parameter1 / @ parameter1未提供。任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您需要为参数提供默认值。

  CREATE PROCEDURE Update-all  
 (  @RowID INT,
    @Parameter1 NVARCHAR(50) = NULL,
    @Parameter2 INT = NULL
 )
As
....

答案 1 :(得分:2)

您需要为参数提供默认值。 e.g。

create procedure Test1 (
   @rowid int,
   @Param1 nvarchar(50) = null,
   @Param2 int = 0 )
as
   print 'rowid=' + convert(varchar(20), @rowid)
   print 'param1=' + @Param1
   print 'param2=' + convert(varchar(20), @Param2)

exec Test1 5
exec Test1 5, 'testing'
exec Test1 5, 'testing', 198

答案 2 :(得分:0)

为参数添加一些默认值:

CREATE PROCEDURE Update-all  
 (  @RowID INT,
    @Parameter1 NVARCHAR(50) = '',
    @Parameter2 INT = 0
 )