2015-08-11 1 views
0

У меня есть список имен столбцов с разделителями-запятыми, которые я передаю в XML, а затем выбирая. Я хотел бы затем вставить их в входной параметр @selectedRows, который будет вызываться в хранимой процедуре. Как вы вставляете эти несколько значений в параметр @selectedRows? Благодаря!Вставить результаты SELECT Statement в SQL input Параметр

Преобразование Comma Список разделителями в XML и выберите:

DECLARE @xml as xml,@string as varchar(1000),@delimiter as varchar(10) 
SET @string='Column1,Column2,Column3,Column4,Column5' 
SET @delimiter =',' 
SET @xml = cast(('<X>'+replace(@string,@delimiter ,'</X><X>')+'</X>') as xml) 
SELECT N.value('.', 'varchar(25)') as value FROM @xml.nodes('X') as T(N) 

Это будет в хранимой процедуре:

Select @selectedRows 
from Test 
where TestField > TestField 

ответ

0

вам не нужно разделить запятой с разделителями строк имен столбцов, но вы необходимо будет использовать динамический sql для этого, что-то вроде этого ....

Declare @Sql NVarChar(Max); 
Declare @string VarChar(1000) = 'Column1,Column2,Column3,Column4,Column5'; 

SET @Sql = N' SELECT ' + @string 
     + N' From Test ' 
     + N' where TestField > TestField' 

Exec sp_executesql @Sql 
+0

Просто предостережение: этот динамический sql является очень точное определение инъекционной атаки, которая должна произойти. –