PDA

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