استخراج نتایج پرس وجو با فرمت XML از SQL Server
XML زبانی است که امکان ذخیره دادههای ساختیافته را فراهم میکند. دادههای ساختیافته به دادههایی گفته میشود که قسمتهای مختلف آن قابل تفکیک و ساختاربندی باشد. مثلا برای ارائه اطلاعات مربوط به کتابهای یک کتابخانه میتوان از یک فایل XML استفاده کرد و در آن نام کتابخانه، تعداد کتابها و سپس لیستی از کتابهای موجود در کتابخانه شامل نام کتاب، نام نویسنده و خلاصه آنرا به فایل XML مورد نظر اضافه کرد. در XML ازیکسری نشانههایی با عنوان تگ(tag) استفاده میشود که از طریق این تگها میتوان معانی دادههای مختلف موجود در فایل را تعریف کرد و سپس از همین تگها استفاده میکنیم تا دادههای مورد نظر خود را در فایل پیدا کنیم.
یکی از نرمافزارهای بانک اطلاعاتی که کاربرد زیادی نیز دارد، نرمافزار SQL Server 2000 شرکت مایکروسافت میباشد. در این نرمافزار امکاناتی لحاظ شده است که میتوان با استفاده از آنها، دادههای موجود در جداول را به صورت XML بدست آورد.
میتوان با استفاده از عبارت For XML در دستور select، بهجای آنکه نتایج آنرا به صورت سطری داشته باشیم، آنها را به صورت XML دریافت کنیم. به همراه عبارت For XML باید یکی از حالات Auto، RAW یا Explicit در عبارت مشخص شود.
یکی از نرمافزارهای بانک اطلاعاتی که کاربرد زیادی نیز دارد، نرمافزار 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
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″/>
<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 و تگهای تودرتو بدست آوریم.
در صورت استفاده از عبارت 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
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>
<Orders OrderID=”10643″/>
<Orders OrderID=”10692″/>
<Orders OrderID=”10702″/>
<Orders OrderID=”10835″/>
<Orders OrderID=”10952″/>
<Orders OrderID=”11011″/>
</Customers>
منبع:
Microsoft SQL Server Books Online
نوشته شده توسط حسن شجاعی در یکشنبه ۱۹ خرداد ۱۳۸۷ |

توسط fariborz در آبان ۳۰, ۱۳۸۸ | پاسخ
توضیحاتی راجع به نوع شبکه ونوع سرور و نام لایه ها تعداد وعملکردشان ومزایاو معایبشان بفرمایید
توسط RosaBruce در فروردین ۱۶, ۱۳۸۹ | پاسخ
Every body admits that our life seems to be not very cheap, nevertheless we need money for different stuff and not every man earns enough cash. Thus to receive fast credit loans and just sba loan should be a correct way out.
توسط رامین پاک در شهریور ۱۲, ۱۳۸۹ | پاسخ
سلام
حال اگر بخواهیم این xml را دوباره در جای دیگری در جداول sql بریزیم باید چه کنیم.
منظورم این است که import چگونه انجام می شود
توسط Feveantee در مهر ۲, ۱۳۸۹ | پاسخ
viagra experience,viagra online without prescription uk 345)()(
توسط Feveantee در مهر ۳, ۱۳۸۹ | پاسخ
viagra grapefruit juice,viagra pfizer uk 345)()(
توسط Feveantee در مهر ۳, ۱۳۸۹ | پاسخ
lipitor side effects,lipitor generic 345)()(
توسط Pain in the elbows در مهر ۱۰, ۱۳۸۹ | پاسخ
Hi. Is boxing getting more popular?
توسط loans در مهر ۲۹, ۱۳۸۹ | پاسخ
That is some inspirational stuff. Never knew that opinions could be this varied. Thanks for all the enthusiasm to offer such helpful information here.
توسط tweet-attacks در آبان ۹, ۱۳۸۹ | پاسخ
Found y0ur c00l blog with yah00 great website
توسط Legos for Girls در آبان ۱۱, ۱۳۸۹ | پاسخ
I think youve made some truly interesting points. Not too many people would actually think about this the way you just did. Im really impressed that theres so much about this subject thats been uncovered and you did it so well, with so much class. Good one you, man! Really great stuff here.
توسط weight lifting belt در آبان ۱۲, ۱۳۸۹ | پاسخ
Are you a fan of boxing?
توسط Carolann Roam در آبان ۱۳, ۱۳۸۹ | پاسخ
This site was very useful. Ta a lot. I will domain for any updates.