通过SQL OpenXML循环获取字段名称

时间:2015-12-22 20:39:16

标签: sql-server

我有一个存储过程,它将接收我将要处理的xml文档。根据将调用此过程的不同进程,我将从此openxml准备文档中将数据插入到临时表中,该文档将来自一个或另一个组。

Ex:可能是:

FROM OPENXML(@idoc, '/data/BeneInfoGroup/BeneInfo', 1)

或者可能是:

 FROM OPENXML(@idoc, '/data/PersonalInfoGroup/PersonalInfo', 1)

只有一个小组会通过。根据这个组 - 我想创建一个插入临时表(已经创建)的SQL字符串(待执行),并包含openxml doc中的字段名称。

所以我的代码(在上面的两个例子中)看起来像:

        strSQL = N'INSERT INTO @tmpTbl (BeneID, BeneSSN, BeneDate)
        SELECT BeneID, BeneSSN, BeneDate
        FROM OPENXML(@idoc, ''/data/BeneInfoGroup/BeneInfo'', 1) 
WITH (BeneID nvarchar(50) ''BeneID'', BeneSSN nvarchar(50) ''BeneSSN'', BeneDate nvarchar(50) ''BeneDate'')'

或者它看起来像:

         strSQL = N'INSERT INTO @tmpTbl (PersonID, PersonSSN, PersonDate)
         SELECT PersonID, PersonSSN, PersonDate
         FROM OPENXML(@idoc, ''/data/PersonInfoGroup/PersonInfo'', 1) 
WITH (PersonID nvarchar(50) ''PersonID'', PersonSSN nvarchar(50) ''PersonSSN'', PersonDate nvarchar(50) ''PersonDate'')'

以上两个例子很少。它不会成为" Person" vs" Bene"头。这些字段可以在任一组中命名。因此,我想循环遍历openxml文档,并在适当的时候将字段名放入我的字符串中。我可以处理数据类型细节等。我只需要从我准备好的openxml文档中提取字段名称。

请不要使用OPENXML之外的替代方法。 基本问题是 - 如何根据我收到的xml文档以非硬编码的方式从文档中提取字段名称?

我不想创建一个字段名称表。 我只想通过循环并引用openxml中该特定组的每个字段名。

无需担心@tmpTbl - 我创建了这个可能插入其中的所有可能字段。

提前致谢!丹尼尔

0 个答案:

没有答案