View Full Version : فراخواني يك Stored Procedure در Stored Procedure ديگر
meitti
چهارشنبه 07 بهمن 1388, 10:34 صبح
سلام
نحوه فراخواني يك Stored Procedure در Stored Procedure ديگه را لطفا توضيح بدين
محمد سلیم آبادی
چهارشنبه 07 بهمن 1388, 13:02 عصر
سلام،
نحوه ی call کردن یک sp داخل یکی دیگر بطور معمولی انجام می شود مثلا:
create proc sp_test as
execute sp_another
و با کمک تابع @@nestlevel می توانید به سطح تودرتویی SP جاری که اجرا شده پی برین. و تا 32 مرحله می توانید sp ها را تو در تو اجرا کنید.
meitti
چهارشنبه 07 بهمن 1388, 13:15 عصر
حالا چه جوري ميشه اين execute _spanotrer رو توي جدول مجازي ريخت
محمد سلیم آبادی
چهارشنبه 07 بهمن 1388, 13:57 عصر
منظورتون از جدول مجازی چیه؟ و چه چیزی را داخل این جدول بریزیم؟ نتیجه ی یک SELECT یا یک متغیر.
اگر پارامتر ورودی را از نوع output انتخاب کنید امکان استفاده از مقدار متغیر استفاده شده در SP وجود دارد.
meitti
چهارشنبه 07 بهمن 1388, 13:58 عصر
يه select هستش كه مي خوام بريزم توي جدول مجازي و از اطلاعات اون استفاده كنم
محمد سلیم آبادی
چهارشنبه 07 بهمن 1388, 14:16 عصر
گمان کنم منظور از مجازی، موقت باشد.
از syntax زیر برای درج در جدول استفاده کنید:
insert into table_name
execute sp_name
meitti
چهارشنبه 07 بهمن 1388, 14:22 عصر
پیغام خطای زیر رو میده
Invalid object name 'table_name'.
یعنی باید قبلش table_name رو تعریف کنم
meitti
پنج شنبه 08 بهمن 1388, 11:58 صبح
:متفکر: يكي به من كمك كنه
DataMaster
پنج شنبه 08 بهمن 1388, 13:42 عصر
پیغام خطای زیر رو میده
Invalid object name 'table_name'.
یعنی باید قبلش table_name رو تعریف کنم
table_name نام جدولی هست که میخوای اطلاعات توی اون درج بشه
مسلما باید وجود داشته باشه
meitti
پنج شنبه 08 بهمن 1388, 14:32 عصر
من نمي خوام جدولي ساخته بشه
ميخوام جدول مجازي باشه و از اطلاعاتش استفاده كنم
DataMaster
جمعه 09 بهمن 1388, 13:59 عصر
البته این کد رو تو 2008 تست کردم
declare @tt table (id [uniqueidentifier] NOT NULL ,Name Varchar(50))
insert into @tt
SELECT [DriverID]
,[FName]
FROM [Gardesh2008].[dbo].[tblDrivers]
A.Farzin
شنبه 10 بهمن 1388, 11:27 صبح
از متغییر Table استفاده کن.
لازم به اشاره است که امکان تعریف متغییر از نوع Table در نسخه 2000 و قبلتر وجود ندارد.
حواسم به پست قبلی نبود و این پست را فرستادم. DataMaster همین کار را کرده است.
meitti
شنبه 10 بهمن 1388, 15:10 عصر
با تشكر از پاسخهاي كليه دوستان
اما من هنوز به جواب مورد نظرم نرسيدم
توي sql جواب يه select رو ميشه بصورت زير توي يه جدول مجازي ريخت
select * from into ##table
حالا من ميخوام خروجي كد زير رو به يه table مانند بالا پاس كنم ايا ميشه يا نه؟
exec sp_table
باتشكر
MR.Karami
سه شنبه 13 بهمن 1388, 11:00 صبح
با سلام
من هم همين مشكل رو دارم
با تشكر
meitti
شنبه 17 بهمن 1388, 10:54 صبح
يعني اين كاري كه من ميگم نميشه؟؟؟
محمد سلیم آبادی
شنبه 17 بهمن 1388, 11:05 صبح
با تشکر از پاسخهای کلیه دوستان
اما من هنوز به جواب مورد نظرم نرسیدم
توی sql جواب یه select رو میشه بصورت زیر توی یه جدول مجازی ریخت
select * from into ##table
حالا من میخوام خروجی کد زیر رو به یه table مانند بالا پاس کنم ایا میشه یا نه؟
exec sp_table
باتشکر
دوست عزیزم من در پست ششم همین تاپیک syntax ای را برای این کار معرفی کردم، اگر بعد از عبارت insert عبارت exec را قرار بدین نتیجه ی آجرای آن sp داخل جدول ریخته می شود:
http://barnamenevis.org/forum/showpost.php?p=897510&postcount=6
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.