错误:仅本机编译的模块支持参数

Che*_*hoc 8 sql sql-server stored-procedures

我想创建一个存储过程。参数之一....

@ID int not null,
Run Code Online (Sandbox Code Playgroud)

给我一个错误:

NOT NULL 参数仅受本机编译的模块支持,内联表值函数除外。

我怎样才能解决这个问题?

Vin*_*nit 6

如果你想required为存储过程添加参数,只需像下面这样声明参数,然后检查 param 是否为 null

Create procedure MyProc
@ID int
as
    if @ID is null
    begin
      -- handle the null case here
    end
--  rest of your query
Run Code Online (Sandbox Code Playgroud)

如果参数是可选的,则分配null给该参数,如果在过程调用中未提供输入,则该参数充当默认值

Create procedure MyProc
@ID int = null
as
--  your query
Run Code Online (Sandbox Code Playgroud)

  • 这不会阻止您在参数中传递“NULL”,即像“exec MyProc NULL”这样调用它。所以这不是OP问题的答案。 (2认同)