мы можем вернуть нуль из хранимой процедуры - PullRequest
7 голосов
/ 25 февраля 2010

Можем ли мы вернуть нулевое значение из хранимой процедуры.Я не хочу использовать 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 ]

7 голосов
/ 25 февраля 2010

Нет, тип возвращаемой хранимой процедуры - INT, и он не может быть нулевым.

3 голосов
/ 25 февраля 2010

использовать выходной параметр, например

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
0 голосов
/ 26 февраля 2010

Вы можете думать о процедуре следующим образом. Позвольте мне сначала установить контекст. Возможно, у нас есть таблица Table1(id int, name varchar(2), Address varchar(2)) и мы хотим получить идентификатор, и если она не найдена, она будет нулевой. Таким образом, мы могли бы написать процедуру вроде следующего:

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

Это будет работать для вас.

...