Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在存储过程中使用可选参数_Sql_Sql Server - Fatal编程技术网

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

Sql 如何在存储过程中使用可选参数,sql,sql-server,Sql,Sql Server,我有一个存储过程,看起来像 CREATE PROCEDURE Update-all ( @RowID INT, @Parameter1 NVARCHAR(50), @Parameter2 INT ) As .... 我将根据不同的条件传递@Parameter1/@Parameter2。 如果我没有传递@Parameter1/@Parameter2,我将得到一个错误,存储过程需要@Parameter1/@Parameter1,但没有提供。有没有办法解决这个问题?给参

我有一个存储过程,看起来像

  CREATE PROCEDURE Update-all  
 (  @RowID INT,
    @Parameter1 NVARCHAR(50),
    @Parameter2 INT
 )
As
....
我将根据不同的条件传递@Parameter1/@Parameter2。
如果我没有传递@Parameter1/@Parameter2,我将得到一个错误,存储过程需要@Parameter1/@Parameter1,但没有提供。有没有办法解决这个问题?

给参数添加一些默认值:

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

您需要为参数提供默认值

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

您需要为参数提供默认值。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

即使我没有在代码中传递@Parameter1/@Parameter2,这是否有效?是的。如果不传递参数,它们将假定您在过程定义中指定的默认值。对于那些可能不知道的人,以下是@onedaywhen上面提到的有关参数嗅探的一些信息: