我们可以从存储过程返回null

时间:2010-02-25 16:56:50

标签: sql-server database sql-server-2005 tsql stored-procedures

我们可以从存储过程返回null值吗?我不想使用collase或isnull。我想在前端捕获NULL。有可能吗?

修改:

  

我正在使用Sql Server 2005

例如。我想用的地方

CREATE PROCEDURE [Authentication].[spOnlineTest_CheckLogin]

  @UserName  NVARCHAR(50)
AS
 BEGIN TRY
  BEGIN TRAN
                    COMMIT TRAN
     RETURN NULL
        END TRY

错误 'spOnlineTest_CheckLogin'过程尝试返回NULL状态,这是不允许的。将返回状态0。 消息0,级别11,状态0,行0 当前命令发生严重错误。结果(如果有的话)应该被丢弃。

3 个答案:

答案 0 :(得分:7)

不,存储过程的返回类型是INT,它不能为空。

答案 1 :(得分:3)

使用输出参数,例如

CREATE PROCEDURE Test
  @UserName  NVARCHAR(50), @Status int output
AS
 BEGIN TRY
  BEGIN TRAN
                    COMMIT TRAN
     set @Status = null
        END TRY
        begin catch
        end catch
        go

然后像这样称呼它

  declare @s int 
  set @s =5
  exec Test'bla',@s output
  select @s --will be null

答案 2 :(得分:0)

你可以想到如下的过程。我先设定一下背景。我们可能有一个表Table1(id int, name varchar(2), Address varchar(2))并想要获取id,如果没有找到,它将为null。所以我们可以编写如下的proc:

CREATE PROCEDURE GetId
  @Name  VARCHAR(50), @Status int output
AS
 BEGIN TRY
     set @Status = null
     select @Status = id from Table1 where name=@name

这对你有用。