NEWS

[SQLSERVER] Hướng dẫn đọc, insert dữ liệu danh sách XML trong store procedure

[SQLSERVER] Hướng dẫn đọc, insert dữ liệu danh sách XML trong store procedure
Đăng bởi: Thảo Meo - Lượt xem: 3752 11:12:55, 19/01/2022DATABASE   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẻ tiếp tục hướng dẫn các bạn, cách làm việc với tập tin file XML trong sqlserver.

[SQLSERVER] Read, Parse, Insert XML in Store Procedure

Các bạn có thể truy vấn query dữ liệu và xuất về định dạng XML như sau:

Cú pháp:

SELECT * FROM dbo.Employees FOR XML AUTO

for_xml_sql

Đầu tiên các bạn, tạo cho mình một bảng Table CustomerDetails như hình bên dưới:

xml_sql

Và tiếp theo chúng ta sẽ có 1 file XML mẫu như sau:

<?xml version="1.0" standalone="yes"?>
<Customers>
 <Customer Id ="1">
    <Name>John Hammond</Name>
    <Country>United States</Country>
 </Customer>
 <Customer Id = "2">
    <Name>Mudassar Khan</Name>
    <Country>India</Country>
 </Customer>
    <Customer Id ="3">
    <Name>Suzanne Mathews</Name>
    <Country>France</Country>
 </Customer>
    <Customer Id ="4">
    <Name>Robert Schidner</Name>
    <Country>Russia</Country>
 </Customer>
</Customers>

Tiếp đến, chúng ta viết 1 store để thực hiện insert danh sách dữ liệu XML này vào:

CREATE PROCEDURE [dbo].[InsertXML]
@xml XML
AS
BEGIN
      SET NOCOUNT ON;
 
      INSERT INTO CustomerDetails
      SELECT
      Customer.value('@Id','INT') AS Id, --ATTRIBUTE
      Customer.value('(Name/text())[1]','VARCHAR(100)') AS Name, --TAG
      Customer.value('(Country/text())[1]','VARCHAR(100)') AS Country --TAG
      FROM
      @xml.nodes('/Customers/Customer')AS TEMPTABLE(Customer)
END

Thực hiện câu lệnh Store trên để Insert:

EXEC [InsertXML]'<Customers>
                               <Customer Id ="1">
                                    <Name>John Hammond</Name>
                                    <Country>United States</Country>
                               </Customer>
                               <Customer Id = "2">
                                    <Name>Mudassar Khan</Name>
                                    <Country>India</Country>
                               </Customer>
                               <Customer Id ="3">
                                    <Name>Suzanne Mathews</Name>
                                    <Country>France</Country>
                               </Customer>
                               <Customer Id ="4">
                                    <Name>Robert Schidner</Name>
                                    <Country>Russia</Country>
                               </Customer>
                              </Customers>'
SELECT * FROM CustomerDetails

Khi thực hiện lệnh này chúng ta sẽ có được kết quả như hình bên dưới:

xml_sql_insert

VD2: Bây giờ chúng ta muốn đọc dữ liệu value trong XML như bên dưới đây.

DECLARE @DeviceIDs XML = N'<Devices><ID value="13" /><ID value="39" /></Devices>'
SELECT  c.value('@value','int') as DeviceID
FROM @DeviceIDs.nodes('Devices/ID') as t(c)

Kết quả:

read_value_xml

Thanks for watching!

THÔNG TIN TÁC GIẢ

[SQLSERVER] Hướng dẫn đọc, insert dữ liệu danh sách XML trong store procedure
Đăng bởi: Thảo Meo - Lượt xem: 3752 11:12:55, 19/01/2022DATABASE   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp