Я понял, почему RETURN
не безоговорочно возвращается из хранимой процедуры. Я вижу ошибку, когда хранимая процедура компилируется , а не когда она выполняется.
Рассмотрим мнимую хранимую процедуру:
CREATE PROCEDURE dbo.foo AS
INSERT INTO ExistingTable
EXECUTE LinkedServer.Database.dbo.SomeProcedure
Даже несмотря на то, что в этой процедуре stord содержится ошибка (возможно, это связано с тем, что объекты имеют разное количество столбцов, возможно, в таблице есть столбец метки времени, возможно, хранимая процедура не существует), вы все равно можете сохранить это. Вы можете сохранить его, потому что ссылаетесь на связанный сервер.
Но когда вы на самом деле выполняете хранимую процедуру, SQL Server ее компилирует и генерирует план запроса.
Моя ошибка не происходит в строке 114, она в строке 114. SQL Server не может скомпилировать хранимую процедуру, поэтому она не работает.
И именно поэтому RETURN
не возвращается, потому что он даже еще не запустил .