SQL Server:存储过程中的可选变量

Roc*_*och 5 sql t-sql sql-server optional-parameters

我想知道无论如何我可以将我的一个存储过程参数设置为可选.

IF @thing_id <> ''
BEGIN 
 SET @sFiltre = @sFiltre + ' AND OPERES.OPE_THING = ' +  CONVERT(VARCHAR,@thing_id)
END
Run Code Online (Sandbox Code Playgroud)

Raj*_*ore 14

创建存储过程时,请像这样创建它

Create Proc MyProc
@Param1 VarChar (20),
@Param2 VarChar (20) = NULL
AS

-- Your code here

GO
Run Code Online (Sandbox Code Playgroud)

Param1是强制性的

Param2是可选的


sha*_*esh 7

为存储过程参数提供默认值将使其成为可选.

编辑:

CREATE PROC [EDURE] [所有者.]
procedure_name [; number]
[{@parameter data_type}
[VARYING] [= default] [OUTPUT]
] [,... n]

默认

是参数的默认值.如果定义了默认值,则可以在不指定该参数值的情况下执行该过程.默认值必须是常量,或者可以为NULL.如果过程使用带有LIKE关键字的参数,则它可以包含通配符(%,_,[]和[^]).

请参阅 - http://msdn.microsoft.com/en-us/library/aa258259%28SQL.80%29.aspx


Joe*_*orn 5

是的。在参数列表末尾列出“可选”参数,并给它们一个默认值(通常为 NULL):

CREATE PROCEDURE MyProcedure
    @param1 int,
    @param2 varchar(200),
    @thing_id int = NULL
AS

    If @thing_id IS NULL Begin
       /* ... */
    End

END
Run Code Online (Sandbox Code Playgroud)