从动态SQL获取变量的输出

nrs*_*rma 3 sql dynamic-sql sql-server-2008

我正在使用动态sqlie

DECLARE @searchstring VARCHAR(500)
DECLARE @str VARCHAR(MAX)
SELECT @str = 'SELECT * FROM Table1 WHERE ' + @searchstring
EXECUTE @str   
Run Code Online (Sandbox Code Playgroud)

我需要的是我想从动态sql上面选择一个列值来传递不同的SP 让我们说我需要ID列值并将其传递给另一个名为GetAnotherData @Ids的sp.我怎样才能做到这一点?

Rom*_*kar 5

你可以使用Alexander Fedorenko的例子,但是如果你不想创建任何临时表,你可以使用输出xml参数来传递你的id:

declare @stmt nvarchar(max), @Data xml, @searchstring nvarchar(max)

select @stmt = '
    select @Data = (
        select id
        from Table1
        where ' + @searchstring + '
        for xml raw(''Data'')
    )
'

exec sp_executesql
    @stmt = @stmt,
    @params = N'@Data xml output',
    @Data = @Data output

select
    T.C.value('@id', 'int') as id
from @Data.nodes('Data') as T(C)
Run Code Online (Sandbox Code Playgroud)

sql fiddle demo