Возвращаемое значение в хранимой процедуре всегда является целым числом, фактически вы можете использовать только целое число с возвращаемым значением. Тот факт, что вы видите 0, означает, что процедура выполняется правильно, это возвращаемое значение, которое возвращает SQL Server, сообщая вам, каков результат выполнения процедуры
Ради интереса сделайте select 1/0
в процедуре, и вы увидите, что больше не будет 0
Смотрите здесь
Всегда ли возвращаемое значение 0 является успешным в хранимых процедурах?
вот примеры из этого ответа
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
для передачи назад статусов и / или сообщений