PDA

View Full Version : چگونگی ذخیره نتایج stored proc در دو جدول موقت



shayan_re
جمعه 09 اردیبهشت 1384, 23:15 عصر
با سلام خدمت دوستان
اگر ما یک sotred proc داشته باشیم که دو مجموعه متفاوت را برگرداند(مثلا دارای دو عبارت select از دو جدول متفاوت باشند)
چگونه می توان آنها را در دو جدول موقت مجزا ذخیره کرد؟ (مثلا sp_help)
مرسی

AminSobati
شنبه 10 اردیبهشت 1384, 13:40 عصر
دوست عزیزم،
در SQL Server تنها Result Set اول رو میتونین وارد جدول کنین. مثلا:
INSERT MyTable EXEC MyProc
ولی SPهایی که بیش از یک Result Set داشته باشند(مثل SP_Help) رو نمیشه مستقیما به یک Result خاصش دسترسی پیدا کرد.
اما اگر توسط ADO.NET این کار رو انجام بدین، توسط NextResult از آبجکت DataReader میشه Result Set مورد نظر رو گرفت.

shayan_re
شنبه 10 اردیبهشت 1384, 13:48 عصر
آقای sobati ممنون
اینو البته میدونستم که با Ado .net و با Data Reader میشه اینکارو انجام داد. من فقط میخواستم
مجموعه اول رو بگیرم بدون اینکه بار شبکه رو بالا ببرم.یعنی بار رو به server تحمیل کنم.
در ضمن آقای sobati مجموعه اول رو نمیشه تو temp table ذخیره کرد چون یک پیغام مبنی بر سازگار نبودن column ها میده.
از راهنماییتون ممنون

AminSobati
شنبه 10 اردیبهشت 1384, 17:00 عصر
البته خیلی سر راست نیست ولی قابل انجامه:

use northwind
go
create proc MyProc as
select customerid from customers
select companyname,city from customers
go

SELECT * into #tmp
FROM OPENROWSET('SQLOLEDB','.';'sa';'',
'exec northwind..MyProc') as a

select * from #tmp

drop table #tmp

shayan_re
یک شنبه 11 اردیبهشت 1384, 10:55 صبح
آقای sobati ممنون
کارم راه نیفتاد ولی نکته ارزشمندی رو به من یاد دادی دوست عزیز
ولی به نظر من این یه نقص تو SQL به نظر شما واقعا راهی وجود نداره :گیج:
تشکر :موفق:

AminSobati
یک شنبه 11 اردیبهشت 1384, 12:55 عصر
خوب یک راه دیگه!
چطوره قسمت مورد نظر از SP رو تبدیل به یک SP مستقل کنین که فقط یک Result Set داشته باشه؟
اگر پیشنهادی دارین، میتونین به SQLWISH@Microsoft.com ارسال کنین! :)

shayan_re
یک شنبه 11 اردیبهشت 1384, 20:10 عصر
دوست عزیز این stored proc در واقع همون sp_help هستش و شما بهتر میدونید دست بردن توش زمان زیادی می طلبه.حقیقتش اینکه من تو #C یه کنترل ساختم که از این stored proc استاندارد استفاده میکنه
و اگه بخوام تو این sp دست ببرم کنترل از کار میفته وهر کی میخواد با این کنترل کار کنه باید این sp جدید رو
Create کنه :wink:

AminSobati
یک شنبه 11 اردیبهشت 1384, 21:26 عصر
شما دقیقا به کدوم Result Set این SP نیاز دارین؟ چون اطلاعات رو از راههای سیستمیه مختلف میشه بدست آورد.

shayan_re
دوشنبه 12 اردیبهشت 1384, 12:57 عصر
فرض کنیم که دو یا سومی باشه مگه فرقی میکنه ::نوشتن::

AminSobati
دوشنبه 12 اردیبهشت 1384, 20:20 عصر
از این جهت سوالم میکنم که بعضی از نتایج SP_Help رو بوسیله دستورات دیگه هم میتونین بدست بیارین!

shayan_re
دوشنبه 12 اردیبهشت 1384, 23:37 عصر
میشه بیشتر توضیح بدید :mrgreen:

AminSobati
سه شنبه 13 اردیبهشت 1384, 10:48 صبح
توضیح :گیج:
عرض شد که SP_Help چند Result داره و بعضی از Resultهای اون رو با SPها یا Functionهای دیگه هم میتونین بدست بیارین..

shayan_re
پنج شنبه 15 اردیبهشت 1384, 10:34 صبح
من منظورتون از Function های دیگه و راه های سیستمی متوجه نشدم
میدونم سخته هی مرتب جواب بدید شرمنده :oops:

AminSobati
پنج شنبه 15 اردیبهشت 1384, 16:48 عصر
دوست عزیزم،
در SQL Server یک سری Function، View، SP وجود داره که اطلاعات سیستمی رو برمیگردونه.
مثلا در این لیست به تفکیک SPها معرفی شده اند:
BOL > Transact-SQL References > System Stored Procedures
همچنین سایر دستورات:
BOL > Transact-SQL References > Functions > System Functions
یا:
BOL > Transact-SQL References > Information Schema Views

نتایجی که SP_Help برمیگردونه، ممکنه هر کدوم از اونها توسط دستورات دیگه ای هم تامین بشه.