lar*_*ryq 112 stored-procedures optional-parameters sql-server-2008
我正在SQL Server 2008中编写一些存储过程,并想知道可选输入参数的概念是否可行?
我想我总是可以为我不想使用的参数传递NULL,检查存储过程中的值,然后从那里拿东西,但我感兴趣的是这里有这个概念.谢谢!
Raj*_*ore 186
你可以像这样声明
CREATE PROCEDURE MyProcName
@Parameter1 INT = 1,
@Parameter2 VARCHAR (100) = 'StringValue',
@Parameter3 VARCHAR (100) = NULL
AS
/* check for the NULL / default value (indicating nothing was passed */
if (@Parameter3 IS NULL)
BEGIN
/* whatever code you desire for a missing parameter*/
INSERT INTO ........
END
/* and use it in the query as so*/
SELECT *
FROM Table
WHERE Column = @Parameter
Run Code Online (Sandbox Code Playgroud)
Mik*_*ole 51
是的.声明参数如下:
@Sort varchar(50) = NULL
Run Code Online (Sandbox Code Playgroud)
现在你甚至不必传入参数.它将默认为NULL(或任何你选择默认的).
至少在SQL Server 2014及更高版本中,您可以设置默认值,并且当您不传递该参数时,它将采用默认值而不是错误。
部分示例:第三个参数作为可选添加。exec仅使用前两个参数执行实际过程( ) 效果很好。
exec getlist 47,1,0
create procedure getlist
@convId int,
@SortOrder int,
@contestantsOnly bit = 0
as
Run Code Online (Sandbox Code Playgroud)