ورود

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



fakhravari
جمعه 13 اردیبهشت 1392, 01:19 صبح
با سلام
سوال تیتر واضح است:لبخند:
فرض کنید sp1 یک select * است

tooraj_azizi_1035
جمعه 13 اردیبهشت 1392, 12:28 عصر
-- First Stored Procedure
CREATE PROCEDURE SquareSP
@MyFirstParam INT
AS
DECLARE @MyFirstParamSquare INT
SELECT @MyFirstParamSquare = @MyFirstParam*@MyFirstParam
-- Additional Code
RETURN (@MyFirstParamSquare)
GO

Now let us create second Stored Procedure which gives us area of the circle.

-- Second Stored Procedure
CREATE PROCEDURE FindArea
@SquaredParam INT
AS
DECLARE @AreaofCircle FLOAT
SELECT @AreaofCircle = @SquaredParam * PI()
RETURN (@AreaofCircle)
GO

You can clearly see that we need to pass the result of the first stored procedure (SquareSP) to second stored procedure (FindArea). We can do that by using following method:

-- Pass One Stored Procedure's Result as Another Stored Procedure's Parameter
DECLARE @ParamtoPass INT, @CircleArea FLOAT
-- First SP
EXEC @ParamtoPass = SquareSP 5
-- Second SP
EXEC @CircleArea = FindArea @ParamtoPass
SELECT @CircleArea FinalArea
GO

You can see that it is extremely simple to pass the result of the first stored procedure to second procedure.

You can clean up the code by running the following code.

-- Clean up
DROP PROCEDURE SquareSP
DROP PROCEDURE FindArea
GO

fakhravari
جمعه 13 اردیبهشت 1392, 13:11 عصر
خروجی جدول نداره sp ؟
RETURN این جوری بلدم.

یوسف زالی
جمعه 13 اردیبهشت 1392, 15:21 عصر
سلام.
برای کار روی خروجی یک SP دیگه اون رو می تونید در یک جدول مجازی اینسرت کنید.



create procedure PTest
as
select 11 as A, 21 as B
union
select 12, 22

go




declare @ExecTbl table (A int, B int)

insert into @ExecTbl
exec PTest

select *
from @ExecTbl

fakhravari
شنبه 14 اردیبهشت 1392, 00:28 صبح
ولی بازم نوع سوال من چیز دیگری بود:لبخند:

یوسف زالی
شنبه 14 اردیبهشت 1392, 17:34 عصر
استفاده از خروجی یک SP در SP دیگه بود دیگه!

fakhravari
شنبه 14 اردیبهشت 1392, 20:56 عصر
:قهقهه:
نیمشه جدول موقط تعریف نکنیم؟
:بامزه:

یوسف زالی
یک شنبه 15 اردیبهشت 1392, 02:24 صبح
از openrowset هم می شه استفاده کرد اما هم کار داره هم معمولا دسترسی همچین دستوراتی رو همه سرور ها بسته هست و امیدی بهش نیست!

moji_helooo
یک شنبه 15 اردیبهشت 1392, 14:51 عصر
خب چرا function تعریف نمی کنید؟!

یوسف زالی
یک شنبه 15 اردیبهشت 1392, 15:14 عصر
دوست من سوال داره می گه SP در یک SP دیگه!!
اگر می گفت تابع راه حل چیز دیگه می شد!!
به عنوان مثال در تابع شما نمی تونی داینامیک کار کنی.