Назначить параметр OUTPUT хранимой процедуры в запросе Dynami c - PullRequest
0 голосов
/ 02 апреля 2020

Что касается этой хранимой процедуры:

CREATE PROCEDURE Test
    (@outparam int OUTPUT)
AS
BEGIN
    DECLARE @SQL VARCHAR(1000)

    SET @SQL = '
    DECLARE @outparam int
    IF (1=0)
        PRINT ''do something here. I use dynamic stuff in IF and in here ''
    ELSE IF (1=0)
        PRINT ''do something here. I use dynamic stuff in IF and in here ''
    ELSE if (1=1)
    BEGIN
        SET @outparam = 5
    END
    '

    EXEC (@SQL)
END

Мне нужно, чтобы @outparam был назначен внутри запроса Dynami c, потому что там, где живут все логики c.

Это не работает. И я понимаю, почему, но я не знаю, как это исправить

DECLARE @out int
EXEC Test @outparam = @out OUTPUT

SELECT @out

1 Ответ

0 голосов
/ 02 апреля 2020

Благодаря @DaleK это работает

CREATE procedure Test

(
    @outparam int OUTPUT
)
as

BEGIN
    DECLARE @SQL NVARCHAR(1000)

SET @SQL = '
IF (1=0)
    print ''do something here. i use dynamic stuff in IF and in here ''
ELSE IF (1=0)
    print ''do something here. i use dynamic stuff in IF and in here ''
ELSE if (1=1)
BEGIN
    SET @outparam = 5
END
'

EXEC sp_executesql @sql,
N'@outparam VARCHAR(MAX) OUTPUT',
@outparam OUTPUT;
END
...