2009-09-08 62 views
1

我需要创建一个动态SQL语句,以便根据XML参数选择字段。如何基于单个XML参数创建动态sql语句

说我有一个存储过程与1个参数 - [@FIELDS XML]包含字段名称。如...

字段1 =名称

场2 =地址等等

..in现实将有多达50场,我只希望在中的那些报告XML参数。

我怎样才能使一个简单的声明是这样的工作..

select 
    xmlParam1, 
    xmlParam2, 
    ... 
    xmlParamN 
from TABLE 

等等

注:数据是从C#中的字符串数组来了。

谢谢!

回答

0

只需遍历数组创建相应的SQL查询语句的字符串,然后EXEC它,比如:

DECLARE @SQL NVARCHAR(4000) 

SET @SQL='select xmlParam1, xmlParam2... from Table' 

EXEC(@SQL) 

显然,SET @SQL部分将在这里你遍历数组,建设字符串。

编辑

要通过XML循环,必须首先从它选择一个记录,如

DECLARE @productIds xml 
SET @productIds ='<Products><id>3</id><id>6</id><id>15</id></Products>' 

SELECT ParamValues.ID.value('.','VARCHAR(20)') 
    FROM @productIds.nodes('/Products/id') as ParamValues(ID) 

然后,您必须通过重复记录,建立你的字符串。有很多方法可以做到这一点,例如使用临时表或光标。有些例子可以在here找到。

+0

嗨达拉斯,你能给我一个如何循环通过的例子吗? – Grant