PDA

View Full Version : تشخيص وجود يك sp در يك ديتابيس



vahid_vzc
سه شنبه 27 اردیبهشت 1390, 08:49 صبح
با سلام
من مي خواهم در يك ديتابيس يك strored procedure ايجاد كنم ولي قبل از آن مي خواهم بررسي كنم ببينم آن stored procedure روي آن ديتابيس وجود دارد يا نه ؟ با چه دستوري مي توان اين موضوع را بررسي كرد
با تشكر

یوسف زالی
سه شنبه 27 اردیبهشت 1390, 09:00 صبح
سلام
if exists(select * from INFORMATION_SCHEMA.ROUTINES where ROUTINE_NAME = 'SP_Name') begin DoSomething end

(متشکرم :لبخند:)

Galawij
سه شنبه 27 اردیبهشت 1390, 09:24 صبح
این دستور لیست همه روال ها را برمی گردونه:
Select name From sys.objects Where type='p'

یوسف زالی
سه شنبه 27 اردیبهشت 1390, 10:19 صبح
کار با Information_Schema از Sys.Object راحت تره و کاربر فهم تره.
اما با هرکدومش می شه به هدف رسید.

حمیدرضاصادقیان
سه شنبه 27 اردیبهشت 1390, 12:32 عصر
سلام.
یک راه خیلی ساده اش استفاده از کد زیر هست.

if object_id(procedureName) is null

با این طریق میتوانید هر شی رو کنترل کنید.
در مورد information_Schema اگر مجبور باشید در یک اسکریپت طولانی ، اشیای گوناگونی رو چک کنید بسیار زمان بر خواهد بود که همون کار با دستوری که عرض کردم در زمان خیلی کمتر و سربار خیلی کمتری رخ خواهد داد.

یوسف زالی
سه شنبه 27 اردیبهشت 1390, 13:16 عصر
درست می فرمایید اما برای وقتهایی که نیاز به اجزای بیشتری از select حاصله داریم information_schema بهتره.
بازم هرچی اساتید بگن!