|
استخراج نتایج پرس وجو با فرمت XML از SQL Server
|
XML زبانی است که امکان ذخیره دادههای ساختیافته را فراهم میکند. دادههای ساختیافته به دادههایی گفته میشود که قسمتهای مختلف آن قابل تفکیک و ساختاربندی باشد. مثلا برای ارائه اطلاعات مربوط به کتابهای یک کتابخانه میتوان از یک فایل XML استفاده کرد و در آن نام کتابخانه، تعداد کتابها و سپس لیستی از کتابهای موجود در کتابخانه شامل نام کتاب، نام نویسنده و خلاصه آنرا به فایل XML مورد نظر اضافه کرد. در XML ازیکسری نشانههایی با عنوان تگ(tag) استفاده میشود که از طریق این تگها میتوان معانی دادههای مختلف موجود در فایل را تعریف کرد و سپس از همین تگها استفاده میکنیم تا دادههای مورد نظر خود را در فایل پیدا کنیم.
یکی از نرمافزارهای بانک اطلاعاتی که کاربرد زیادی نیز دارد، نرمافزار SQL Server 2000 شرکت مایکروسافت میباشد. در این نرمافزار امکاناتی لحاظ شده است که میتوان با استفاده از آنها، دادههای موجود در جداول را به صورت XML بدست آورد.
میتوان با استفاده از عبارت For XML در دستور select، بهجای آنکه نتایج آنرا به صورت سطری داشته باشیم، آنها را به صورت XML دریافت کنیم. به همراه عبارت For XML باید یکی از حالات Auto، RAW یا Explicit در عبارت مشخص شود.
استفاده از حالت RAW
در صورت استفاده از عبارت For XML RAW، به ازای هر رکورد، یک تگ XML با عنوان row ساخته میشود. مقدار هر ستون نیز به صورت یک صفت از این تگ مشخص میشود. صفت انتخاب شده همنام با ستون میباشد.
توجه: برای اجرای مثالهایی که درادامه میآید، باید SQL Query Analyzer را باز کنید و سپس از بانک اطلاعاتی Northwind استفاده نمایید.
مثال: با استفاده از دستور SQL زیر میخواهیم لیست اسامی مشتریان و کالایی که خریدهاند و تارخ خرید را به صورت XML از بانک اطلاعاتی Northwind بدست آوریم.
یکی از نرمافزارهای بانک اطلاعاتی که کاربرد زیادی نیز دارد، نرمافزار SQL Server 2000 شرکت مایکروسافت میباشد. در این نرمافزار امکاناتی لحاظ شده است که میتوان با استفاده از آنها، دادههای موجود در جداول را به صورت XML بدست آورد.
میتوان با استفاده از عبارت For XML در دستور select، بهجای آنکه نتایج آنرا به صورت سطری داشته باشیم، آنها را به صورت XML دریافت کنیم. به همراه عبارت For XML باید یکی از حالات Auto، RAW یا Explicit در عبارت مشخص شود.
استفاده از حالت RAW
در صورت استفاده از عبارت For XML RAW، به ازای هر رکورد، یک تگ XML با عنوان row ساخته میشود. مقدار هر ستون نیز به صورت یک صفت از این تگ مشخص میشود. صفت انتخاب شده همنام با ستون میباشد.
توجه: برای اجرای مثالهایی که درادامه میآید، باید SQL Query Analyzer را باز کنید و سپس از بانک اطلاعاتی Northwind استفاده نمایید.
مثال: با استفاده از دستور SQL زیر میخواهیم لیست اسامی مشتریان و کالایی که خریدهاند و تارخ خرید را به صورت XML از بانک اطلاعاتی Northwind بدست آوریم.
SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerID
FOR XML RAW
نتیجه اجرای دستور فوق به صورت زیر خواهد بود:
<row CustomerID="ALFKI" OrderID="10643" OrderDate="1997-08-25T00:00:00"/>
<row CustomerID="ANATR" OrderID="10308" OrderDate="1996-09-18T00:00:00"/>
<row CustomerID="ANATR" OrderID="10625" OrderDate="1997-08-08T00:00:00"/>
<row CustomerID="AROUT" OrderID="10355" OrderDate="1996-11-15T00:00:00"/>
استفاده از حالت Auto
در صورت استفاده از عبارت For XML AUTO، نتایج به صورت تگهای تودرتو برگردانده میشود. به ازای هر جدولی که در قسمت From وجود دارد یک تگ همنام با آن ساخته میشود. برای هر ستون جدول یک صفت در تگ در نظر گرفته میشود. در صورتیکه به جای عبارت FOR XML AUTO از عبارت FOR XML AUTO,ELEMENTS استفاده شود، برای ستونهای جدول نیز یک تگ داخلی جدید ایجاد خواهد شد.
مثال: با استفاده از دستور SQL زیر میخواهیم لیست اسامی مشتریان و کالایی که خریدهاند و تاریخ خرید را به صورت XML و تگهای تودرتو بدست آوریم.
SELECT Customers.CustomerID, Orders.OrderID, Customers.ContactName
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
FOR XML AUTO
نتیجه اجرای دستور فوق به صورت زیرخواهد بود:
<Customers CustomerID="ALFKI" ContactName="Maria Anders">
<Orders OrderID="10643"/>
<Orders OrderID="10692"/>
<Orders OrderID="10702"/>
<Orders OrderID="10835"/>
<Orders OrderID="10952"/>
<Orders OrderID="11011"/>
</Customers>
منبع:
Microsoft SQL Server Books Online