zoukankan      html  css  js  c++  java
  • sql sp_xml_preparedocument 函数运用实例

    表结构:

    CREATE FUNCTION f_splitSTR(
    @s   varchar(8000),  --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
     --创建分拆处理的辅助表(用户定义函数中只能操作表变量)
     DECLARE @t TABLE(ID int IDENTITY,b bit)
     INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b
    
     INSERT @re SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID)
     FROM @t
     WHERE ID<=LEN(@s+'a') 
      AND CHARINDEX(@split,@split+@s,ID)=ID
     RETURN
    END
    GO
    View Code
    Create proc Test
    As
    Begin
        Declare @data xml
        Declare @idoc int
        Set @data=
        (
            Select  ipduid as '@pduid' , sConfig.query('/items/item')  From xxx_BaseInfo
            where sConfig is not null
             FOR xml path,root('configinfo') 
        )
        --create an internal representation of the xml document.
        exec sp_xml_preparedocument @idoc output, @data
        -- execute a select statement that uses the openxml rowset provider.
    
        Create table #Tmp
        (
                pduid varchar(50),
                prodLine varchar(50),
                proFamily varchar(50),
                proPdt varchar(50),
                prodNo varchar(50)
        )
    
    Insert Into #Tmp
        Select * From (
                Select pduid ,  (Select col From dbo.f_splitSTR(customerid,'/') Where id=1) As prodLine,
                (Select col From dbo.f_splitSTR(customerid,'/') Where id=2) As prodFamily,
                (Select col From dbo.f_splitSTR(customerid,'/') Where id=3) As prodPdt,
                (Select col From dbo.f_splitSTR(customerid,'/') Where id=4) As prodNo
        From openxml (@idoc, '/configinfo/row/item',2)
        With (
                    pduid  varchar(50)    '../@pduid' ,
                    customerid varchar(500) '@id'
                 )
        ) as T
    
    
    exec sp_xml_removedocument @idoc
    
    Select * from #Tmp
    
    End
    View Code
  • 相关阅读:
    视图、触发器、事物、存储过程、函数、流程控制
    pymysql
    单表查询与多表查询
    多线程学习(第三天)线程间通信
    多线程学习(第二天)Java内存模型
    多线程学习(第一天)java语言的线程
    springboot集成es7(基于high level client)
    elasticSearch(六)--全文搜索
    elasticSearch(五)--排序
    elasticSearch(四)--结构化查询
  • 原文地址:https://www.cnblogs.com/lijianhua/p/5579288.html
Copyright © 2011-2022 走看看