【问题标题】:error: parameters are only supported with natively compiled modules错误:仅本机编译的模块支持参数
【发布时间】:2019-01-03 09:18:26
【问题描述】:

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

@ID int not null,

给我一​​个错误:

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

我该如何解决这个问题?

【问题讨论】:

标签: sql sql-server stored-procedures


【解决方案1】:

如果您想为存储过程设置required 参数,则只需像下面这样声明参数,然后检查参数是否为空

Create procedure MyProc
@ID int
as
    if @ID is null
    begin
      -- handle the null case here
    end
--  rest of your query

如果参数是可选的,则将null分配给参数,如果在过程调用中没有提供输入,则作为默认值

Create procedure MyProc
@ID int = null
as
--  your query

【讨论】:

  • 这不会阻止您在参数中传递NULL,即像这样调用它exec MyProc NULL。所以这不是 OP 问题的答案。
【解决方案2】:

如果 SP 开头的参数为 null,则可以抛出错误

IF @ID IS NULL 
  BEGIN 
      RAISERROR (15600,-1,-1,'myProcedure'); 
  END 

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多