7

Можно ли вернуть значение null из хранимой процедуры. Я не хочу использовать collase или isnull. Я хочу захватить NULL в интерфейсе. Является ли это возможным ?мы можем вернуть 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, Level 11, State 0, Line 0 Серьезная ошибка при текущей команде. Результаты, если таковые имеются, должны быть отброшены.

+0

Какую базу вы используете? SQL Server, MySQL и т. Д.? –

+0

@Justin: Q отмечен T-SQL. Это SQL Server. –

+1

@Mehrdad Afshari, Sybase также использует T-SQL –

ответ

7

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

+0

Параметры ввода для хранимых процедур могут быть INT и по-прежнему быть назначены NULL, так почему бы не RETURN параметры? –

+0

@ Крис: вот как язык разработан. Я подозреваю, что его предполагаемый прецедент в качестве статуса неудачи/успеха, но не имеет смысла. –

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 
0

Вы можете думать о прока, как следует. Позвольте мне сначала установить контекст. У нас может быть таблица 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 [email protected] 

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

Смежные вопросы