PDA

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



mehdi58
دوشنبه 11 تیر 1386, 21:04 عصر
با سلام
من میخوام از خروجی یه Stored Procedure توی یه SP دیگه استفاده کنم اما نمیشه دلیلش چی می تونه باشه و برای رفع این مشکل باید چیکار کنم ؟
متشکرم

Create Procedure SP1
AS
DECLARE @x int
SET @X=2
RETURN


Create Procedure SP2
AS
DECLARE @y int
EXECUTE @y=SP1
SELECT * FROM myTable WHERE ID=@y

whitehat
دوشنبه 11 تیر 1386, 21:17 عصر
شما چیزی Return نکردید!(متغیر های Local با خروج از SP از بین می روند)

supporter
دوشنبه 11 تیر 1386, 22:14 عصر
می تونید از Return Value یا Output parameter استفاده کنید:




Create Procedure SP1(@ID INT OUTPUT)
AS
DECLARE @X int
SET @ID = 3
SET @X=2
RETURN(@X)


Create Procedure SP2
AS
DECLARE @y int, @z int
EXECUTE @y = SP1 @z OUTPUT
SELECT * FROM myTable WHERE ID = @y OR ID =@z

mahboob
سه شنبه 12 تیر 1386, 13:28 عصر
با سلام
من میخوام از خروجی یه Stored Procedure توی یه SP دیگه استفاده کنم اما نمیشه دلیلش چی می تونه باشه و برای رفع این مشکل باید چیکار کنم ؟
متشکرم

Create Procedure SP1
AS
DECLARE @x int
SET @X=2
RETURN


Create Procedure SP2
AS
DECLARE @y int
EXECUTE @y=SP1
SELECT * FROM myTable WHERE ID=@y

شما فقط کافیست که @X رو قبل از as تعریف کنید یعنی از متغیر خارجی استفاده کنید
Create Procedure SP1
x int @
AS
SET @X=2
RETURN

mehdi58
شنبه 16 تیر 1386, 20:57 عصر
با تشکر
مشکلم حل شد اما یه سوال دیگه
اگه بخوام حاصل کوئری زیر رو به یه SP انتقال بدم چیار باید یکنم ؟ چون RETURN F1,F2 رو اجازه نمی ده و اینکه آیا باید این دو فیلد رو از طریق دو تا کوئری مجزا توی یه متغیر ذخیره کنم و اونها رو به SP دیگه پاس بدم ؟

SELET F1,F2 FROM myTable WHERE ID=10

whitehat
شنبه 16 تیر 1386, 21:51 عصر
اگر مقادیر شما فقط یک مقدار داشته باشند (مانند جدول نباشد) می توانید از دستورات زیر استفاده کنید


Select @x1=F1,@x2=F2 From Mytable Where ID=10

mehdi58
یک شنبه 17 تیر 1386, 10:19 صبح
منظورم Return دو مقدار بود که ایراد می گیره

whitehat
یک شنبه 17 تیر 1386, 13:17 عصر
شما فقط می توانید یک مقدار آن هم فقط با نوع int بوسیله return برگردانید