1

我需要创建一个基于 XML 参数选择字段的动态 SQL 语句。

假设我有一个带有 1 个参数的存储过程 - [@FIELDS XML] 包含字段名称。例如...

字段 1 = 名称

字段 2 = 地址等...

..实际上最多有 50 个字段,我只想报告 XML 参数中的字段。

我怎样才能做出像这样的工作的简单陈述..

select
  xmlParam1,
  xmlParam2,
  ...
  xmlParamN
from TABLE

ETC...

注意:数据来自 c# 中的字符串数组。

谢谢!

4

1 回答 1

0

只需遍历数组以将适当的 SQL 查询创建为字符串,然后执行它,例如:

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)

然后,您必须遍历记录集,构建您的字符串。有很多方法可以做到这一点,例如使用临时表或游标。一些例子可以在这里找到。

于 2009-09-08T14:36:28.443 回答