Это слишком долго для комментария.
Ваша хранимая процедура ничего не возвращает, поэтому возвращаемое значение равно NULL
.
В общем случае вы должны использовать возвращаемое значение из хранимой процедуры в качестве состояния, а не возвращать фактические данные.
Реальные возвращаемые значения должны быть возвращены через output
параметров.
Кроме того, я настоятельно рекомендую для этой цели предложение OUTPUT
:
ALTER PROCEDURE [dbo].[sp_StoredProcedureName] (
@parameterName varchar(4000),
@returnValue int OUTPUT
)
with execute as owner
as
BEGIN
DECLARE @ids TABLE (id int);
INSERT INTO [dbo].[TableName] (parameterName)
OUTPUT id INTO @ids
VALUES (@parameterName);
SELECT TOP (1) @returnValue = id -- only 1 is expected anyway
FROM @ids;
END;
Тогда вы бы назвали это:
declare @RC int;
declare @parameterName nvarchar(4000);
set @parameterName = N'TEST';
exec [dbo].[sp_StoredProcedureName] @parameterName, @rc int OUTPUT;
Динамический SQL не требуется.