【问题标题】:Insert results of SELECT Statement into SQL input Parameter将 SELECT 语句的结果插入 SQL 输入参数
【发布时间】:2015-08-11 20:45:04
【问题描述】:

我有一个以逗号分隔的列名列表,我将其转换为 XML,然后进行选择。然后我想将这些插入到@selectedRows 输入参数中,该参数将在存储过程中调用。如何将这些多个值插入@selectedRows 参数?谢谢!

将逗号分隔列表转换为 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

【问题讨论】:

    标签: sql-server xml sql-server-2008


    【解决方案1】:

    您不需要拆分以逗号分隔的列名字符串,但您需要为此使用动态 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
    

    【讨论】:

    • 请注意:动态 sql 正是等待发生的注入攻击的定义。
    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多