Если хранимая процедура возвращает значение нуля, всегда ли это означает, что она была успешно запущена? Я использую MS SQL Server 2008.
Является ли возвращаемое значение 0 всегда успешным в хранимых процедурах?
Ответ 1
Нет, вы можете что-то вернуть себе
Пример
CREATE PROC pr_test AS
SELECT 1/0
RETURN 0
GO
Теперь запустите его
DECLARE @i INT
exec @i = pr_test
SELECT @i -- will be 0
DROP PROC pr_test
Теперь сделаем это снова без оператора return
CREATE PROC pr_test2 AS
SELECT 1/0
GO
DECLARE @i INT
exec @i = pr_test2
SELECT @i -- will be - 6
Лучше использовать output parameter
для возврата статусов и/или сообщений
Ответ 2
Вы можете использовать слово Return
, чтобы вернуть любое целочисленное значение из хранимой процедуры. Это означает, что ноль не означает, что хранимая процедура была успешно выполнена.
Ответ 3
Возвращаемое значение @@ERROR "zero" означает, что ваша процедура выполнена без ошибок.
Конечно, это не значит, что он сделал то, что вы хотели...
Можете ли вы более конкретно узнать, что вы ищете?