Является ли возвращаемое значение 0 всегда успешным в хранимых процедурах?

Если хранимая процедура возвращает значение нуля, всегда ли это означает, что она была успешно запущена? Я использую MS SQL Server 2008.

Ответ 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" означает, что ваша процедура выполнена без ошибок.

Конечно, это не значит, что он сделал то, что вы хотели...

Можете ли вы более конкретно узнать, что вы ищете?