SlideShare a Scribd company logo
BAB
VII
XML DAN DATABASE
Riza Muhammad Nurman, S.Kom
Email : rizaman@eng.ui.ac.id ; rizamn@ymail.com
Sunday, April 22, 2018 Riza Muhammad Nurman 2
CONTENT
 MENGGUNAKAN KLAUSA FOR XML
 PENGGUNAAN KLAUSA OPENXML
 MEMBUAT DOKUMEN XML PADA SQL SERVER
 PENGGUNAAN XQUERY
Sunday, April 22, 2018 Riza Muhammad Nurman 3
MENGGUNAKAN KLAUSA FOR XML
• Dalam SQL Query, data dapat ditampilkan dalam bentuk XML
dengan menggunakan klausa FOR XML.
• FOR XML query memiliki beberapa tipe yang dapat dipilih
bergantung pada bentuk tampilan hasil yang diinginkan.
• Beberapa tipe dari query FOR XML adalah:
– FOR XML RAW
– FOR XML AUTO
– FOR XML PATH
– FOR XML EXPLISIT
Sunday, April 22, 2018 Riza Muhammad Nurman 4
FOR XML RAW
SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID]
,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt]
,[Freight],[TotalDue]
FROM [Purchasing].[PurchaseOrderHeader]
WHERE [TotalDue] > 1000000
FOR XML RAW
<row PurchaseOrderID="4012" Status="2" EmployeeID="231"
VendorID="29" ShipMethodID="3"
OrderDate="2004-07-25T00:00:00" ShipDate="2004-08-
19T00:00:00" SubTotal="997680.0000"
TaxAmt="79814.4000" Freight="19953.6000"
TotalDue="1097448.0000" />
FOR XML RAW menghasilkan data dalam bentuk atribut yang dikelompokkan
dalam elemen <row>
Sunday, April 22, 2018 Riza Muhammad Nurman 5
<row>
<PurchaseOrderID>4012</PurchaseOrderID>
<Status>2</Status>
<EmployeeID>231</EmployeeID>
<VendorID>29</VendorID>
<ShipMethodID>3</ShipMethodID>
<OrderDate>2004-07-25T00:00:00</OrderDate>
<ShipDate>2004-08-19T00:00:00</ShipDate>
<SubTotal>997680.0000</SubTotal>
<TaxAmt>79814.4000</TaxAmt>
<Freight>19953.6000</Freight>
<TotalDue>1097448.0000</TotalDue>
</row>
SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID]
,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt]
,[Freight],[TotalDue]
FROM [Purchasing].[PurchaseOrderHeader]
WHERE [TotalDue] > 1000000
FOR XML RAW, ELEMENTS
FOR XML RAW - 2
Sunday, April 22, 2018 Riza Muhammad Nurman 6
<Orders>
<Order>
<PurchaseOrderID>4012</PurchaseOrderID>
<Status>2</Status>
<EmployeeID>231</EmployeeID>
<VendorID>29</VendorID>
<ShipMethodID>3</ShipMethodID>
<OrderDate>2004-07-25T00:00:00</OrderDate>
<ShipDate>2004-08-19T00:00:00</ShipDate>
<SubTotal>997680.0000</SubTotal>
<TaxAmt>79814.4000</TaxAmt>
<Freight>19953.6000</Freight>
<TotalDue>1097448.0000</TotalDue>
</Order>
</Orders>
SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID]
,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt]
,[Freight],[TotalDue]
FROM [Purchasing].[PurchaseOrderHeader]
WHERE [TotalDue] > 1000000
FOR XML RAW('Order'), ROOT('Orders') , ELEMENTS
FOR XML RAW - 3
Sunday, April 22, 2018 Riza Muhammad Nurman 7
SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID]
,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt]
,[Freight],[TotalDue]
FROM [Purchasing].[PurchaseOrderHeader]
WHERE [TotalDue] > 1000000
FOR XML RAW('Order'), ROOT('Orders') , ELEMENTS, XMLSCHEMA
FOR XML RAW - 4
Sunday, April 22, 2018 Riza Muhammad Nurman 8
FOR XML AUTO
• FOR XML RAW tidak dapat digunakan jika data yang dihasilkan dari
query tersebut berbentuk nested data
• Perbedaan FOR XML RAW dan FOR XML AUTO akan terlihat jika
query digunakan untuk menampilkan data dari dua tabel yang saling
terhubung
• Contoh :
• query FOR XML AUTO berikut yang digunakan untuk menampilkan
data dari tabel PurchaseOrderHeader dan PurchaseOrderDetail yang
dihubungkan dengan Join
Sunday, April 22, 2018 Riza Muhammad Nurman 9
FOR XML AUTO - 2
SELECT
PO.PurchaseOrderID,PO.Status,PO.EmployeeID,PO.VendorID
,PO.ShipMethodIDPO.OrderDate,PO.ShipDate,PO.SubTotal,PO.TaxA
mt,
PO.Freight,PO.TotalDue,POD.OrderQty,POD.ProductID,POD.UnitPr
ice
FROM Purchasing.PurchaseOrderHeader PO INNER JOIN
Purchasing.PurchaseOrderDetail POD
ON PO.PurchaseOrderID = POD.PurchaseOrderID
WHERE PO.TotalDue > 1000000
FOR XML AUTO, ROOT('Orders')
Sunday, April 22, 2018 Riza Muhammad Nurman 10
FOR XML AUTO - 3
<Orders>
<PurchaseOrderHeader PurchaseOrderID="4012" Status="2"
EmployeeID="231" VendorID="29" ShipMethodID="3"
OrderDate="2004-07-25T00:00:00" ShipDate="2004-08-
19T00:00:00"
SubTotal="997680.0000" TaxAmt="79814.4000"
Freight="19953.6000" TotalDue="1097448.0000">
<PurchaseOrderDetail OrderQty="6000" ProductID="881"
UnitPrice="41.5700" />
<PurchaseOrderDetail OrderQty="6000" ProductID="882"
UnitPrice="41.5700" />
<PurchaseOrderDetail OrderQty="6000" ProductID="883"
UnitPrice="41.5700" />
<PurchaseOrderDetail OrderQty="6000" ProductID="884"
UnitPrice="41.5700" />
</PurchaseOrderHeader>
</Orders>
Sunday, April 22, 2018 Riza Muhammad Nurman 11
FOR XML EXPLICIT
• Opsi EXPLICIT dapat digunakan untuk berbagai macam hal untuk
dapat menghasilkan data dalam format XML
Sunday, April 22, 2018 Riza Muhammad Nurman 12
FOR XML PATH
• FOR XML PATH dapat digunakan untuk menampilkan data dalam
bentuk nested XML yang terdiri dari elemen dan atribut menjadi lebih
mudah
• Contoh  query yang menampilkan kolom PurchaseOrderID, Status
dan EmployeeID dalam bentuk atribut
SELECT [PurchaseOrderID] [@PurchaseOrderID],
[Status] [@Status],[EmployeeID][@EmployeeID],
[VendorID] ,[ShipMethodID],[OrderDate],[ShipDate],
[SubTotal],[TaxAmt],[Freight],[TotalDue]
FROM [Purchasing].[PurchaseOrderHeader]
WHERE [TotalDue] > 1000000
FOR XML PATH('Order'), ROOT('Orders')
Sunday, April 22, 2018 Riza Muhammad Nurman 13
FOR XML PATH - 2
<Orders>
<Order PurchaseOrderID="4012" Status="2" EmployeeID="231">
<VendorID>29</VendorID>
<ShipMethodID>3</ShipMethodID>
<OrderDate>2004-07-25T00:00:00</OrderDate>
<ShipDate>2004-08-19T00:00:00</ShipDate>
<SubTotal>997680.0000</SubTotal>
<TaxAmt>79814.4000</TaxAmt>
<Freight>19953.6000</Freight>
<TotalDue>1097448.0000</TotalDue>
</Order>
</Orders>
Sunday, April 22, 2018 Riza Muhammad Nurman 14
FOR XML PATH - 3
• FOR XML PATH juga dapat digunakan untuk
mengkontrol nesting document.
• Contoh  menampilkan data dari dua tabel yaitu
PurchaseOrderHeader dan
PurchaseOrderDetail
– data dari tabel PurchaseOrderHeader dituliskan
dalam bentuk atribut
– data dari tabel PurchaseOrderDetail dituliskan
dalam bentuk elemen.
Sunday, April 22, 2018 Riza Muhammad Nurman 15
PENGGUNAAN KLAUSA OPENXML
• Dokumen XML dan isinya dapat disisipkan ke dalam tabel database standar.
• Proses ini terdiri atas tiga tahapan dan biasanya dikenal dengan istilah
shredding
1. Langkah pertama ini dapat dianalogikan
dengan melakukan pemuatan
DOMDOcument object
2. Langkah kedua adalah langkah
memproses dokumen XML
3. Langkah terakhir adalah melakukan
penghapus representasi XML dalam
tabel internal di SQL Server
Sunday, April 22, 2018 Riza Muhammad Nurman 16
PENGGUNAAN KLAUSA OPENXML - 2
• Salah satu keuntungan dari penggunaan OPENXML adalah dapat
digunakan dengan stored procedure yang memiliki parameter dalam
bentuk array.
• Contoh  jika terdapat sebuah aplikasi e-commerce yang
memungkinkan pembeli untuk memilih barang dan jumlah barang
yang ingin dibeli dan menyimpannya dalam sebuah keranjang
pembelian
• Setelah pembeli menyelesaikan proses belanja, maka nilai yang
tersimpan dalam keranjang belanja tersebut perlu dikirimkan ke
sebuah stored procedure agar bisa dilakukan perhitungan.
Sunday, April 22, 2018 Riza Muhammad Nurman 17
PENGGUNAAN KLAUSA OPENXML - 3
Sunday, April 22, 2018 Riza Muhammad Nurman 18
MEMBUAT DOKUMEN XML PADA SQL SERVER
create table dbo.Docs
(
DocID int identity primary key,
XMLDoc XML
)
insert docs
values('<Person><FirstName>Joe</FirstName>
<LastName>Fawcett</LastName></Person>')
Sunday, April 22, 2018 Riza Muhammad Nurman 19
PENGGUNAAN XQUERY
• Data yang memiliki tipe data XML dapat diperlakukan sama seperti
data lainnya, dalam hal pemodifikasian dan juga penghapusan
dengan menggunakan Xquery
• Perintah XQuery biasanya diletakkan sebagai tambahan pada T-SQL.
Sunday, April 22, 2018 Riza Muhammad Nurman 20
PENGGUNAAN XQUERY – MENGHAPUS DATA
DECLARE @myDoc XML
SET @myDoc = '<Person><FirstName>Joe</FirstName>
<LastName>Fawcett</LastName></Person>'
SELECT @myDoc
SET @myDoc.modify(' delete /Person/*[2]')
SELECT @myDoc
Sunday, April 22, 2018 Riza Muhammad Nurman 21
PENGGUNAAN XQUERY – MENAMBAH DATA
DECLARE @myDoc XML
SET @myDoc = '<Person><LastName>Fawcett</LastName></Person>'
SELECT @myDoc
SET @myDoc.modify(' insert <FirstName>Joe</FirstName> as first
into /Person[1]')
SELECT @myDoc
DECLARE @myDoc XML
SET @myDoc = '<Person><LastName>Fawcett</LastName></Person>'
SELECT @myDoc
SET @myDoc.modify('insert <FirstName>Joe</FirstName>
before (/Person/LastName)[1]')
SELECT @myDoc
Sunday, April 22, 2018 Riza Muhammad Nurman 22
PENGGUNAAN XQUERY – MEMODIFIKASI DATA
DECLARE @myDoc XML
SET @myDoc = '<Person><FirstName>Joe</FirstName>
<LastName>Fawcett</LastName></Person> '
SELECT @myDoc
SET @myDoc.modify('replace value of (/Person/FirstName/text())[1]
with "Gillian"')
SELECT @myDoc
XML - Chapter 7 XML DAN DATABASE

More Related Content

PPTX
XML - Chapter 2
PPTX
TOT PHP DAY 1
PPTX
SE - Chapter 9 Pemeliharaan Perangkat Lunak
PPTX
SE - Chapter 8 Strategi Pengujian Perangkat Lunak
PPTX
SE - Chapter 7 Teknik Pengujian Perangkat Lunak
PPTX
SE - Chapter 6 Tim dan Kualitas Perangkat Lunak
PPTX
XML - Chapter 8 WEB SERVICES
PPTX
XML - Chapter 6 SIMPLE API FOR XML (SAX)
XML - Chapter 2
TOT PHP DAY 1
SE - Chapter 9 Pemeliharaan Perangkat Lunak
SE - Chapter 8 Strategi Pengujian Perangkat Lunak
SE - Chapter 7 Teknik Pengujian Perangkat Lunak
SE - Chapter 6 Tim dan Kualitas Perangkat Lunak
XML - Chapter 8 WEB SERVICES
XML - Chapter 6 SIMPLE API FOR XML (SAX)

More from Riza Nurman (20)

PPTX
XML - Chapter 5 XML DOM
PPTX
DBA BAB 5 - Keamanan Database
PPTX
DBA BAB 4 - Recovery Data
PPTX
DBA BAB 3 - Manage Database
PPTX
DBA BAB 2 - INSTALASI DAN UPGRADE SQL SERVER 2005
PPTX
DBA BAB 1 - Pengenalan Database Administrator
PDF
RMN - XML Source Code
PPTX
XML - Chapter 4
PPTX
XML - Chapter 3
PPTX
XML - Chapter 1
PPTX
ADP - Chapter 5 Exploring JavaServer Pages Technology
PPTX
ADP - Chapter 4 Managing Sessions
PPTX
ADP- Chapter 3 Implementing Inter-Servlet Communication
PPTX
ADP - Chapter 2 Exploring the java Servlet Technology
PPTX
ADP - Chapter 1 Introducing Web Application Development
PPSX
MIS BAB 10
PPSX
MIS BAB 9
PPSX
MIS BAB 8
PPSX
MIS BAB 7
PPSX
MIS BAB 4 - Sistem Penunjang Keputusan
XML - Chapter 5 XML DOM
DBA BAB 5 - Keamanan Database
DBA BAB 4 - Recovery Data
DBA BAB 3 - Manage Database
DBA BAB 2 - INSTALASI DAN UPGRADE SQL SERVER 2005
DBA BAB 1 - Pengenalan Database Administrator
RMN - XML Source Code
XML - Chapter 4
XML - Chapter 3
XML - Chapter 1
ADP - Chapter 5 Exploring JavaServer Pages Technology
ADP - Chapter 4 Managing Sessions
ADP- Chapter 3 Implementing Inter-Servlet Communication
ADP - Chapter 2 Exploring the java Servlet Technology
ADP - Chapter 1 Introducing Web Application Development
MIS BAB 10
MIS BAB 9
MIS BAB 8
MIS BAB 7
MIS BAB 4 - Sistem Penunjang Keputusan
Ad

Recently uploaded (20)

DOCX
Modul Ajar Deep Learning PKN Kelas 10 SMA Terbaru 2025
PDF
BAHASA INDONESIA KELAS 6 SD TEKS INFORMATIF
PPSX
Teknik Trading Selang Seling Yang Dapat Digunakan Untuk Trading Manual Maupun...
DOCX
Modul Ajar Deep Learning PJOK Kelas 12 SMA Terbaru 2025
DOCX
Modul Ajar Deep Learning PAI & BP Kelas 10 SMA Terbaru 2025
PDF
883668952-KP-4-Modul-2-Kerangka-Pembelajaran-Mendalam.pdf
PPTX
Rancangan Kegiatan Kokurikuler SMP N 1 Karanggede
DOCX
Modul Ajar Pembelajaran Mendalam Senbud Seni Musik Kelas XII Terbaru 2025
PDF
KELOMPOK 4 LK Modul 4 KP4 Asesmen PM (3).pdf
DOCX
Modul Ajar Deep Learning Prakarya Kerajinan Kelas 12 SMA Terbaru 2025
DOCX
Modul Ajar Deep Learning Biologi Kelas 10 SMA Terbaru 2025
PPTX
Bahan Tayang OJT Pembelajaran Mendalam KS
PDF
Pengenalan Undang-undang pengakap laut.pdf
DOCX
Modul Ajar Pembelajaran Mendalam Senbud Seni Teater Kelas XII Terbaru 2025
PPTX
5. Bahan Bacaan Asinkronus Modul 5_ Perencanaan Pembelajaran.pptx
PPTX
Pancasila: fondasi peradaban dan kebudayaan berkelanjutan
PPTX
Keterbatasan-Fasilitas-dalam-Mengajar-KKA.pptx
DOCX
Modul Ajar Deep Learning PAI & BP Kelas 12 SMA Terbaru 2025
DOCX
CONTOH RANCANGAN MODUL PROYEK KOKURIKULER SMA 1.docx
PDF
Gangguan Penglihatan Mata - presentasi biologi
Modul Ajar Deep Learning PKN Kelas 10 SMA Terbaru 2025
BAHASA INDONESIA KELAS 6 SD TEKS INFORMATIF
Teknik Trading Selang Seling Yang Dapat Digunakan Untuk Trading Manual Maupun...
Modul Ajar Deep Learning PJOK Kelas 12 SMA Terbaru 2025
Modul Ajar Deep Learning PAI & BP Kelas 10 SMA Terbaru 2025
883668952-KP-4-Modul-2-Kerangka-Pembelajaran-Mendalam.pdf
Rancangan Kegiatan Kokurikuler SMP N 1 Karanggede
Modul Ajar Pembelajaran Mendalam Senbud Seni Musik Kelas XII Terbaru 2025
KELOMPOK 4 LK Modul 4 KP4 Asesmen PM (3).pdf
Modul Ajar Deep Learning Prakarya Kerajinan Kelas 12 SMA Terbaru 2025
Modul Ajar Deep Learning Biologi Kelas 10 SMA Terbaru 2025
Bahan Tayang OJT Pembelajaran Mendalam KS
Pengenalan Undang-undang pengakap laut.pdf
Modul Ajar Pembelajaran Mendalam Senbud Seni Teater Kelas XII Terbaru 2025
5. Bahan Bacaan Asinkronus Modul 5_ Perencanaan Pembelajaran.pptx
Pancasila: fondasi peradaban dan kebudayaan berkelanjutan
Keterbatasan-Fasilitas-dalam-Mengajar-KKA.pptx
Modul Ajar Deep Learning PAI & BP Kelas 12 SMA Terbaru 2025
CONTOH RANCANGAN MODUL PROYEK KOKURIKULER SMA 1.docx
Gangguan Penglihatan Mata - presentasi biologi
Ad

XML - Chapter 7 XML DAN DATABASE

  • 1. BAB VII XML DAN DATABASE Riza Muhammad Nurman, S.Kom Email : rizaman@eng.ui.ac.id ; rizamn@ymail.com
  • 2. Sunday, April 22, 2018 Riza Muhammad Nurman 2 CONTENT  MENGGUNAKAN KLAUSA FOR XML  PENGGUNAAN KLAUSA OPENXML  MEMBUAT DOKUMEN XML PADA SQL SERVER  PENGGUNAAN XQUERY
  • 3. Sunday, April 22, 2018 Riza Muhammad Nurman 3 MENGGUNAKAN KLAUSA FOR XML • Dalam SQL Query, data dapat ditampilkan dalam bentuk XML dengan menggunakan klausa FOR XML. • FOR XML query memiliki beberapa tipe yang dapat dipilih bergantung pada bentuk tampilan hasil yang diinginkan. • Beberapa tipe dari query FOR XML adalah: – FOR XML RAW – FOR XML AUTO – FOR XML PATH – FOR XML EXPLISIT
  • 4. Sunday, April 22, 2018 Riza Muhammad Nurman 4 FOR XML RAW SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID] ,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt] ,[Freight],[TotalDue] FROM [Purchasing].[PurchaseOrderHeader] WHERE [TotalDue] > 1000000 FOR XML RAW <row PurchaseOrderID="4012" Status="2" EmployeeID="231" VendorID="29" ShipMethodID="3" OrderDate="2004-07-25T00:00:00" ShipDate="2004-08- 19T00:00:00" SubTotal="997680.0000" TaxAmt="79814.4000" Freight="19953.6000" TotalDue="1097448.0000" /> FOR XML RAW menghasilkan data dalam bentuk atribut yang dikelompokkan dalam elemen <row>
  • 5. Sunday, April 22, 2018 Riza Muhammad Nurman 5 <row> <PurchaseOrderID>4012</PurchaseOrderID> <Status>2</Status> <EmployeeID>231</EmployeeID> <VendorID>29</VendorID> <ShipMethodID>3</ShipMethodID> <OrderDate>2004-07-25T00:00:00</OrderDate> <ShipDate>2004-08-19T00:00:00</ShipDate> <SubTotal>997680.0000</SubTotal> <TaxAmt>79814.4000</TaxAmt> <Freight>19953.6000</Freight> <TotalDue>1097448.0000</TotalDue> </row> SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID] ,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt] ,[Freight],[TotalDue] FROM [Purchasing].[PurchaseOrderHeader] WHERE [TotalDue] > 1000000 FOR XML RAW, ELEMENTS FOR XML RAW - 2
  • 6. Sunday, April 22, 2018 Riza Muhammad Nurman 6 <Orders> <Order> <PurchaseOrderID>4012</PurchaseOrderID> <Status>2</Status> <EmployeeID>231</EmployeeID> <VendorID>29</VendorID> <ShipMethodID>3</ShipMethodID> <OrderDate>2004-07-25T00:00:00</OrderDate> <ShipDate>2004-08-19T00:00:00</ShipDate> <SubTotal>997680.0000</SubTotal> <TaxAmt>79814.4000</TaxAmt> <Freight>19953.6000</Freight> <TotalDue>1097448.0000</TotalDue> </Order> </Orders> SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID] ,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt] ,[Freight],[TotalDue] FROM [Purchasing].[PurchaseOrderHeader] WHERE [TotalDue] > 1000000 FOR XML RAW('Order'), ROOT('Orders') , ELEMENTS FOR XML RAW - 3
  • 7. Sunday, April 22, 2018 Riza Muhammad Nurman 7 SELECT [PurchaseOrderID],[Status],[EmployeeID],[VendorID] ,[ShipMethodID],[OrderDate],[ShipDate],[SubTotal],[TaxAmt] ,[Freight],[TotalDue] FROM [Purchasing].[PurchaseOrderHeader] WHERE [TotalDue] > 1000000 FOR XML RAW('Order'), ROOT('Orders') , ELEMENTS, XMLSCHEMA FOR XML RAW - 4
  • 8. Sunday, April 22, 2018 Riza Muhammad Nurman 8 FOR XML AUTO • FOR XML RAW tidak dapat digunakan jika data yang dihasilkan dari query tersebut berbentuk nested data • Perbedaan FOR XML RAW dan FOR XML AUTO akan terlihat jika query digunakan untuk menampilkan data dari dua tabel yang saling terhubung • Contoh : • query FOR XML AUTO berikut yang digunakan untuk menampilkan data dari tabel PurchaseOrderHeader dan PurchaseOrderDetail yang dihubungkan dengan Join
  • 9. Sunday, April 22, 2018 Riza Muhammad Nurman 9 FOR XML AUTO - 2 SELECT PO.PurchaseOrderID,PO.Status,PO.EmployeeID,PO.VendorID ,PO.ShipMethodIDPO.OrderDate,PO.ShipDate,PO.SubTotal,PO.TaxA mt, PO.Freight,PO.TotalDue,POD.OrderQty,POD.ProductID,POD.UnitPr ice FROM Purchasing.PurchaseOrderHeader PO INNER JOIN Purchasing.PurchaseOrderDetail POD ON PO.PurchaseOrderID = POD.PurchaseOrderID WHERE PO.TotalDue > 1000000 FOR XML AUTO, ROOT('Orders')
  • 10. Sunday, April 22, 2018 Riza Muhammad Nurman 10 FOR XML AUTO - 3 <Orders> <PurchaseOrderHeader PurchaseOrderID="4012" Status="2" EmployeeID="231" VendorID="29" ShipMethodID="3" OrderDate="2004-07-25T00:00:00" ShipDate="2004-08- 19T00:00:00" SubTotal="997680.0000" TaxAmt="79814.4000" Freight="19953.6000" TotalDue="1097448.0000"> <PurchaseOrderDetail OrderQty="6000" ProductID="881" UnitPrice="41.5700" /> <PurchaseOrderDetail OrderQty="6000" ProductID="882" UnitPrice="41.5700" /> <PurchaseOrderDetail OrderQty="6000" ProductID="883" UnitPrice="41.5700" /> <PurchaseOrderDetail OrderQty="6000" ProductID="884" UnitPrice="41.5700" /> </PurchaseOrderHeader> </Orders>
  • 11. Sunday, April 22, 2018 Riza Muhammad Nurman 11 FOR XML EXPLICIT • Opsi EXPLICIT dapat digunakan untuk berbagai macam hal untuk dapat menghasilkan data dalam format XML
  • 12. Sunday, April 22, 2018 Riza Muhammad Nurman 12 FOR XML PATH • FOR XML PATH dapat digunakan untuk menampilkan data dalam bentuk nested XML yang terdiri dari elemen dan atribut menjadi lebih mudah • Contoh  query yang menampilkan kolom PurchaseOrderID, Status dan EmployeeID dalam bentuk atribut SELECT [PurchaseOrderID] [@PurchaseOrderID], [Status] [@Status],[EmployeeID][@EmployeeID], [VendorID] ,[ShipMethodID],[OrderDate],[ShipDate], [SubTotal],[TaxAmt],[Freight],[TotalDue] FROM [Purchasing].[PurchaseOrderHeader] WHERE [TotalDue] > 1000000 FOR XML PATH('Order'), ROOT('Orders')
  • 13. Sunday, April 22, 2018 Riza Muhammad Nurman 13 FOR XML PATH - 2 <Orders> <Order PurchaseOrderID="4012" Status="2" EmployeeID="231"> <VendorID>29</VendorID> <ShipMethodID>3</ShipMethodID> <OrderDate>2004-07-25T00:00:00</OrderDate> <ShipDate>2004-08-19T00:00:00</ShipDate> <SubTotal>997680.0000</SubTotal> <TaxAmt>79814.4000</TaxAmt> <Freight>19953.6000</Freight> <TotalDue>1097448.0000</TotalDue> </Order> </Orders>
  • 14. Sunday, April 22, 2018 Riza Muhammad Nurman 14 FOR XML PATH - 3 • FOR XML PATH juga dapat digunakan untuk mengkontrol nesting document. • Contoh  menampilkan data dari dua tabel yaitu PurchaseOrderHeader dan PurchaseOrderDetail – data dari tabel PurchaseOrderHeader dituliskan dalam bentuk atribut – data dari tabel PurchaseOrderDetail dituliskan dalam bentuk elemen.
  • 15. Sunday, April 22, 2018 Riza Muhammad Nurman 15 PENGGUNAAN KLAUSA OPENXML • Dokumen XML dan isinya dapat disisipkan ke dalam tabel database standar. • Proses ini terdiri atas tiga tahapan dan biasanya dikenal dengan istilah shredding 1. Langkah pertama ini dapat dianalogikan dengan melakukan pemuatan DOMDOcument object 2. Langkah kedua adalah langkah memproses dokumen XML 3. Langkah terakhir adalah melakukan penghapus representasi XML dalam tabel internal di SQL Server
  • 16. Sunday, April 22, 2018 Riza Muhammad Nurman 16 PENGGUNAAN KLAUSA OPENXML - 2 • Salah satu keuntungan dari penggunaan OPENXML adalah dapat digunakan dengan stored procedure yang memiliki parameter dalam bentuk array. • Contoh  jika terdapat sebuah aplikasi e-commerce yang memungkinkan pembeli untuk memilih barang dan jumlah barang yang ingin dibeli dan menyimpannya dalam sebuah keranjang pembelian • Setelah pembeli menyelesaikan proses belanja, maka nilai yang tersimpan dalam keranjang belanja tersebut perlu dikirimkan ke sebuah stored procedure agar bisa dilakukan perhitungan.
  • 17. Sunday, April 22, 2018 Riza Muhammad Nurman 17 PENGGUNAAN KLAUSA OPENXML - 3
  • 18. Sunday, April 22, 2018 Riza Muhammad Nurman 18 MEMBUAT DOKUMEN XML PADA SQL SERVER create table dbo.Docs ( DocID int identity primary key, XMLDoc XML ) insert docs values('<Person><FirstName>Joe</FirstName> <LastName>Fawcett</LastName></Person>')
  • 19. Sunday, April 22, 2018 Riza Muhammad Nurman 19 PENGGUNAAN XQUERY • Data yang memiliki tipe data XML dapat diperlakukan sama seperti data lainnya, dalam hal pemodifikasian dan juga penghapusan dengan menggunakan Xquery • Perintah XQuery biasanya diletakkan sebagai tambahan pada T-SQL.
  • 20. Sunday, April 22, 2018 Riza Muhammad Nurman 20 PENGGUNAAN XQUERY – MENGHAPUS DATA DECLARE @myDoc XML SET @myDoc = '<Person><FirstName>Joe</FirstName> <LastName>Fawcett</LastName></Person>' SELECT @myDoc SET @myDoc.modify(' delete /Person/*[2]') SELECT @myDoc
  • 21. Sunday, April 22, 2018 Riza Muhammad Nurman 21 PENGGUNAAN XQUERY – MENAMBAH DATA DECLARE @myDoc XML SET @myDoc = '<Person><LastName>Fawcett</LastName></Person>' SELECT @myDoc SET @myDoc.modify(' insert <FirstName>Joe</FirstName> as first into /Person[1]') SELECT @myDoc DECLARE @myDoc XML SET @myDoc = '<Person><LastName>Fawcett</LastName></Person>' SELECT @myDoc SET @myDoc.modify('insert <FirstName>Joe</FirstName> before (/Person/LastName)[1]') SELECT @myDoc
  • 22. Sunday, April 22, 2018 Riza Muhammad Nurman 22 PENGGUNAAN XQUERY – MEMODIFIKASI DATA DECLARE @myDoc XML SET @myDoc = '<Person><FirstName>Joe</FirstName> <LastName>Fawcett</LastName></Person> ' SELECT @myDoc SET @myDoc.modify('replace value of (/Person/FirstName/text())[1] with "Gillian"') SELECT @myDoc