PDA

View Full Version : استفاده از نتایج Exec در Select



Saeed.Elmi
شنبه 27 مرداد 1386, 12:35 عصر
با سلام
چه تکنیکی وجود داره که بتوانم از نتایج EXEC MySP در Select استفاده کرد!
مثلا:

Select * From
Exec MySP

با CTE ها هم سعی کردم ولی...:افسرده:
امیدوارم سوالم خنده دار نباشه

Hamid.Kad
شنبه 27 مرداد 1386, 13:15 عصر
یه متغیر از نوع Table پاس کن به sp بعد توی sp پرش کن و توی select از این متغیر استفاده کن

AminSobati
شنبه 27 مرداد 1386, 20:09 عصر
اگر داخل SP دستوراتی رو که در Function غیر مجاز نیستند استفاده نکرده باشید، میتونین SP رو تبدیل به Function کنید:


SELECT * FROM MyFunction(@a, @b)
WHERE ...

mhadvi_mahmaood
شنبه 27 مرداد 1386, 23:35 عصر
از XML م میشه استفاده کرد. ولی سخته

Saeed.Elmi
یک شنبه 28 مرداد 1386, 11:28 صبح
خیلی ممنون
جناب حمید آقا: مگه می شه یک جدول رو به عنوان پارامتر ورودی پاس داد!! هر مدل سعی کردم نشد. میشه از این حالت یک مثال یا Reference بگویید! ممنون

جناب ثباتی: اگه SP من چند تا Select داشته باشه که دیگه نمیشه از روشی که فرموده بودین استفاده کرد! و اگه ممکنه در مورد روشی که دوست عزیزمون لطف کردن (Table Parameters) توضیح بفرمایید.

خیلی ممنون

AminSobati
یک شنبه 28 مرداد 1386, 12:25 عصر
اگر Selectها ساختار یکسان دارند، میتونین در تابع اونها رو UNION کنین.
برای تبدیل Select به XML میتونین به انتهای اون FOR XML اضافه کنین. ولی به هر حال نمیشه SP رو در قسمت FROM بکار گرفت

پویا
یک شنبه 28 مرداد 1386, 13:07 عصر
اگه از Cursor استفاده نکردی و یه select سادست به view تبدیلش کن

Saeed.Elmi
یک شنبه 28 مرداد 1386, 13:21 عصر
جناب ثباتی از توضیحی که فرمودین خیلی ممنون ولی می شه در مورد پاس دادن Table به SP هم توضیح یا Referenceی معرفی بفرمایید
با تشکر!
آقا پویا با توجه به پست 5 این راه حل جواب نمی دهد

AminSobati
یک شنبه 28 مرداد 1386, 14:23 عصر
سعید جان با کدوم ورژن کار میکنی؟

Mohammad_Mnt
یک شنبه 28 مرداد 1386, 14:25 عصر
من مشکلم شبیه این است:
می خوام نتیجه ی یه SP را بریزم توی یه جدول موقت. یه چیزی شبیه این :

EXECUTE MySP 1,100,200 INTO #MyTable:ناراحت:

AminSobati
یک شنبه 28 مرداد 1386, 14:59 عصر
INSERT MyTable EXEC MySP

Saeed.Elmi
یک شنبه 28 مرداد 1386, 15:07 عصر
سلام جناب ثباتی
با 2005 کار می کنم! ولی اگه بشه به عنوان ورودی یک جدول پاس داد خیلی جالب می شه!!
مثل خروجی Table-Valued Functionها
بازم ممنون

Hamid.Kad
یک شنبه 28 مرداد 1386, 16:36 عصر
سعید جان. فکر میکردم این امر امکان پذیره. ولی ظاهراً نمشیه.
شما میتونی برای شبیه سازی خروجی جدول رو توی یه جدول گلوبال (##) بریزی و بعد از اون استفاده کنی.
بابت اشتیاق کاذبی که ایجاد کردم، شرمنده !!!

AminSobati
یک شنبه 28 مرداد 1386, 21:16 عصر
سعید جان بالاخره صورت مسئله پاس کردن Table به SP هست یا Select کردن از خروجی SP!!

مثال اول برای پاس کردن جدول به SP و دومی چیزی شبیه به استفاده از SP در Select هستش. حالا شما بسته به نیازت با هم ترکیبشون کن...



USE Northwind
GO
---
CREATE PROC SRLZ_Customers
@Result XML OUTPUT
AS
SET @Result= (SELECT * FROM Customers
FOR XML AUTO,ELEMENTS)
GO
---
CREATE PROC ChooseCountry
@Param1 XML
AS
SELECT @Param1.query ('for $b in Customers where $b/Country="UK" return $b')
GO
---
DECLARE @MyVar XML
EXEC SRLZ_Customers @MyVar OUTPUT
EXEC ChooseCountry @MyVar




EXEC sp_configure 'Ad Hoc Distributed Queries',1
reconfigure with override
GO

USE Northwind
GO
---
CREATE PROC spTest
AS
SELECT * FROM Customers
GO
---
SELECT * FROM OPENROWSET('SQLNCLI','Server=.;Trusted_Connection= yes;','EXEC Northwind.dbo.spTest')
SELECT * INTO #MyTable FROM OPENROWSET('SQLNCLI','Server=.;Trusted_Connection= yes;','EXEC Northwind.dbo.spTest')

mhadvi_mahmaood
یک شنبه 28 مرداد 1386, 22:52 عصر
پس آخرش شد همون XML ? نمی دونم چرا کارکردن باهاش برام سخته! حالا این راه استاندارده؟

AminSobati
دوشنبه 29 مرداد 1386, 00:22 صبح
حالا این راه استاندارده؟
صد در صد! حتی گاهی بهتر از جدول موقتی و امثالهم...

Saeed.Elmi
دوشنبه 29 مرداد 1386, 09:25 صبح
با تشکر از استاد ثباتی.
ببخشید استاد زمانی که از یک جدول خروجی XML تولید می کنیم، این عمل به کندی انجام می شود(البته نسبت به ساختارهای استاندارد Tableها) و فکر می کنم چون این عمل کار بر روی رشته ها است کامل کندیش منطقی باشد. البته سعی می کنم بر اساس Reference منظورم رو بیان کنم.
باز هم از زحمتی که کشیدید متشکر هستم.

Ali2200
سه شنبه 30 مرداد 1386, 10:09 صبح
سلام
من از insert تو برنامه ام استفاده کردم ولی فقط حرف اول text box ام را وارد دیتا بیس می کنه . چه کنم ؟