можем ли мы вернуть null из хранимой процедуры

можем ли мы вернуть значение null из хранимой процедуры. я не хочу использовать collase или isnull. Я хочу захватить NULL на интерфейсе. Возможно ли это ?

Edit:

Я использую 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. Msg 0, Уровень 11, Состояние 0, Строка 0 В текущей команде произошла серьезная ошибка. Результаты, если таковые имеются, следует отбросить.

3 ответов


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


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

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

вы можете думать о proc, как следует. Позвольте мне сначала задать контекст. У нас может быть столик!--1--> и хотите получить идентификатор, и если он не найден, он будет равен нулю. Поэтому мы могли бы написать proc следующим образом:

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

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