PDA

View Full Version : استفاده از خروجی دستورات



علی ارجمندی
پنج شنبه 30 مهر 1383, 19:30 عصر
با سلام مجدد
چطور میشه از خروجی دستوراتی شبیه به sp_helpdb در sql server استفاده
کرد و اونها رو در خود sql server پردازش نمود . (در متغیر ها ذخیره نمود)
با تشکر

AminSobati
پنج شنبه 30 مهر 1383, 21:46 عصر
علی جان،
چندین راه حل وجود داره برای این کار. اول اینکه ساده ترین راه پردازش(از دید برنامه نویس) روی سرور، Cursor هستش. چون اطلاعات رو در حافظه Cache میکنه راحت میشه بین رکوردها جا به جا شد. ولی تا جایی که میتونیم از این کار اجتناب میکنیم چون هم CPU و هم Memory صرف میشه. برای همین عرض کردم از دید برنامه نویس راحته ولی برای SQL Server نه چندان!
اما به هر حال استفاده از Cursor گاهی واقعا اجتناب ناپذیره و من فرض رو بر این میگذارم که شما هم در همین شرایط قرار گرفتین.
خوب برای ساختن Cursor همیشه باید از یک جدول یا View اول Query انجام بدیم اما الان نه جدول داریم نه View بلکه نتیجه اجرای یک Procedure مد نظر ماست. باید دنبال راهی بگردیم که از اجرای Procedure بتونیم Query بگیریم. برای این کار میشه از OPENROWSET استفاده کرد که خیلی کلک جالبیه اما اشکالش اینه که username و password در اون باید داده بشه. ولی شاید ارزش داشته باشه یک username و password مخصوص این کار ایجاد کنیم. به این شکل Query انجام میدیم:


SELECT * FROM
OPENROWSET ( 'sqloledb'
, '.' ; 'username' ; 'password'
, 'EXEC MyDB..My_SP')
راه دیگه برای Query و ایجاد Cursor اینه که اول یک جدول موقتی بسازیم و بعد توسط INSERT، اطلاعات حاصله از اجرای Procedure رو وارد اون کنیم. حالا با یک Query ساده از این جدول، میشه Cursor رو ایجاد کرد.

اما فقط در مورد بعضی اطلاعات سیستمی خاص، در SQL Server برای اونها هم Procedure وجود داره هم View. مثلا به جای sp_helpdb میتونین از یک View استفاده کنین به اسم INFORMATION_SCHEMA.SCHEMATA:

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA

موفق باشین

علی ارجمندی
شنبه 02 آبان 1383, 18:27 عصر
امین خان
خیلی چاکریم تشکر :wink:

AminSobati
شنبه 02 آبان 1383, 18:49 عصر
موفق باشی :)