Я создал скрипт T-SQL, который очень хорошо работает, когда я выполняю его напрямую. Затем я поместил этот сценарий в хранимую процедуру с 2 параметрами, но когда я выполняю его, строки не затрагиваются ... тогда я обнаружил, что мои 2 параметра всегда принимаются как NULL моей хранимой процедурой.
Я пытался установить значения параметров по умолчанию в скрипте создания хранимой процедуры, но даже в этом случае они равны NULL.
Я пытался не объявлять параметры как скалярные переменные внутри @SQLString
, так как они уже созданы с CREATE PROCEDURE
в качестве параметров, но я получил ошибку:
Скалярная переменная должна быть объявлена
когда я пытался выполнить свою хранимую процедуру.
CREATE PROCEDURE [dbo].[sp_InsertMetierEventRelation]
@metier NVARCHAR(50),
@evenement NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQLString NVARCHAR(4000)
SET @SQLString = N'
DECLARE @rowId INT, @metier NVARCHAR(50), @evenement NVARCHAR(50)
SELECT @metier AS metierParam -- always NULL
SELECT @evenement AS evenementParam -- always NULL
SELECT met_id FROM [dbo].[t_metier] WHERE [met_nom] = @metier
SELECT eve_id FROM [dbo].[t_evenement] WHERE [eve_nom] = @evenement
-- some other code
'
EXECUTE sp_executesql @SQLString
END
GO
Я называю свою хранимую процедуру следующим образом:
EXEC [dbo].[sp_InsertMetierEventRelation]
@metier = 'Organisation de mariage',
@evenement = 'Evènement religieux';
или так:
EXEC [dbo].[sp_InsertMetierEventRelation]
'Organisation de mariage', 'Evènement religieux';
Я получил тот же результат:
metierParam NULL
evenementParam NULL
met_id NO RESULT
eve_id NO RESULT