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上面提到的有关参数嗅探的一些信息: