DECLARE @a NVARCHAR(10) ,
@b NVARCHAR(100)
SET @a = 'value'
SET @b = ' PRINT @a '
EXEC sp_executesql @b
Я хотел бы в результате: 'значение'
но я получаю ошибку Должен объявить скалярную переменную "@a"
мне нужно войти из SQL параметры, которые назывались SP
мне это нужно, потому что внутри SP я создаю динамический запрос из INFORMATION_SCHEMA.PARAMETERS
моя процедура:
ALTER PROCEDURE marianTest
@a INT,
@b NVARCHAR(121)
AS
BEGIN
DECLARE @query NVARCHAR(max)
SET @query = dbo.ufn_admin_Ex(cast(OBJECT_NAME(@@PROCID) AS nvarchar(100)))
EXECUTE sp_executesql @query
где @query выглядит так:
declare @callSP nvarchar(max) =
'DECLARE @a int = ' + CASE WHEN @a IS NULL THEN 'NULL' ELSE convert(nvarchar(15),@a) END + CHAR(13)
+', @b nvarchar(121) = ' + CASE WHEN @b IS NULL THEN 'NULL' ELSE + '''' + @b+ '''' END + CHAR(13)
EXECUTE [dbo].[usp_admin_traceError] @callSp
спасибо
Marian