sql 解析text的XML数据

来源:转载

//**创建临时表,用于存储批量准备的供应商信息 准入日期是按部门经理审批的时间**//
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#Suppliertemp') and type='U')
  drop table #Suppliertemp
create table #Suppliertemp
(
   ProjectId varchar(50),
   Supplierid varchar(50),
  SuplierAllowdate datetime
)
DECLARE Supplier_Cursor CURSOR FOR
Select  ProjectID,convert(xml,ListData)as Supplierid,DeptDate from AFPProjectSupplierBatchAllow  where Status='EndAudit';
OPEN Supplier_Cursor;
Declare @Sprojectid varchar(12)
declare @supplierid xml
declare @sdeptdate datetime
FETCH NEXT FROM Supplier_Cursor into @Sprojectid,@supplierid,@sdeptdate;
WHILE @@FETCH_STATUS = 0
   BEGIN
      insert into #Suppliertemp  select @Sprojectid, L.n.value('(.)','NVARCHAR(MAX)'),@sdeptdate FROM  @supplierid.nodes('/List/Item/@Supplier_ID')L(n)
      FETCH NEXT FROM Supplier_Cursor into @Sprojectid,@supplierid,@sdeptdate;
   END;
CLOSE Supplier_Cursor;
DEALLOCATE Supplier_Cursor;
/*将单个准入表的信息插入到临时表*/
insert into #Suppliertemp  select ProjectID,SupplierID,DeptDate from AFPProjectSupplierAllow


--select supplierid,min(suplierallowdate)as allowdate from #suppliertemp  where year(suplierallowdate)!=9999 group by supplierid

--select Supplier_AllowDate,* from Supplier  where Supplier_Grade='Project'
select * from  #supplierTemp

--select * from Supplier where  Supplier_Grade='Project'

---select a.Supplier_AllowDate,* from Supplier a
---left join (select supplierid,min(suplierallowdate)as allowdate from #suppliertemp  where year(suplierallowdate)!=9999 group by supplierid
---)b on a.supplier_id=b.supplierid
---where  a.Supplier_Grade='Project'

update Supplier set Supplier_AllowDate=b.allowdate  
from Supplier,
 (select supplierid,min(suplierallowdate)as allowdate from #suppliertemp  where year(suplierallowdate)!=9999 group by supplierid)b
 where   Supplier_id=b.supplierid
and   Supplier_Grade='Project'


  drop table #Suppliertemp


分享给朋友:
您可能感兴趣的文章:
随机阅读: