Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

iterasi data XML di sql server 2005

Dengan asumsi XML sampel Anda terlihat seperti ini:

<MissingDS>
  <MissingTable>
    <MissingColumn>abc</MissingColumn>
    <TableName>tblMyTable</TableName>
    <PhysicalColName>table_abc</PhysicalColName>
    <Grantor_Grantee>nobody</Grantor_Grantee>
  </MissingTable>
  <MissingTable>
    <MissingColumn>xyu</MissingColumn>
    <TableName>tblMyTable2</TableName>
    <PhysicalColName>table_xyz</PhysicalColName>
    <Grantor_Grantee>nobody2</Grantor_Grantee>
  </MissingTable>
</MissingDS>

Kemudian Anda dapat menguraikan ini dengan dukungan SQL Server 2005 XQuery baru seperti ini:

DECLARE @MissingXML XML
SET @MissingXML = CAST(@MissingRecordsXML AS XML)

SELECT
    Missing.Rec.value('(MissingColumn)[1]', 'varchar(1000)') AS 'MissingColumn',
    Missing.Rec.value('(TableName)[1]', 'varchar(100)') AS 'TableName',
    Missing.Rec.value('(PhysicalColName)[1]', 'varchar(100)') AS 'Physical',
    Missing.Rec.value('(Grantor_Grantee)[1]', 'varchar(100)') AS 'Grantor_Grantee'
FROM
    @MissingXML.nodes('/MissingDS/MissingTable') AS Missing(Rec)

Tentu saja, jika Anda dapat MEMILIHnya, Anda juga dapat MEMASUKKAN baris data yang sama ke dalam tabel dengan cukup mudah:

INSERT INTO 
  dbo.MissingDSTable(MissingColumn, TableName, PhysicalColName, Grantor_Grantee)
    SELECT
       Missing.Rec.value('(MissingColumn)[1]', 'varchar(1000)') AS 'MissingColumn',
       Missing.Rec.value('(TableName)[1]', 'varchar(100)') AS 'TableName',
       Missing.Rec.value('(PhysicalColName)[1]', 'varchar(100)') AS 'Physical',
       Missing.Rec.value('(Grantor_Grantee)[1]', 'varchar(100)') AS 'Grantor_Grantee'
    FROM
       @MissingXML.nodes('/MissingDS/MissingTable') AS Missing(Rec)

Semoga bisa sedikit membantu

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilan SQL Penjualan Tanggal Paralel

  2. Kembalikan Daftar Pemicu di SQL Server

  3. Menggunakan dengan vs mendeklarasikan tabel sementara:kinerja/perbedaan?

  4. SQL Server 2005 Bagaimana Anda Menghapus Rencana Eksekusi Kueri?

  5. Bagaimana saya dapat mengautentikasi di SQL SERVER 2008 dengan Pengguna Direktori Aktif tetapi tanpa Otentikasi Windows