چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید.

آپدیت روزانه

بیش از 500 پست آموزشی

نیازهای روز

جستجو برای یافتن استور پروسیجر

گاها در بعضی از پروژه‌ها نیاز است با کمک کوئری یک متن در همه استور پروسیجرها جستجو شده و لیست از استور پروسیجرهای که در آن متن مورد نظر موجود است را لیست نمایم برای مثال متن مورد نظر می‌تواند نام جدول باشد که قصد داریم نام آن را تغییر دهیم.
یکی از راه‌های موجود استفاده از INFORMATION_SCHEMA.ROUTINES خواهد بود به صورت زیر:

SELECT ROUTINE_NAME, ROUTINE_DEFINITION, CREATED, LAST_ALTERED
       FROM INFORMATION_SCHEMA.ROUTINES 
       WHERE ROUTINE_DEFINITION LIKE '%Your Text%' 
       AND ROUTINE_TYPE='PROCEDURE'

اما نکته‌ ستون ROUTINE_DEFINITION از کوئری فوق که عمل شرط بر روی آن انجام شده است تعداد محدود 4000 کاراکتر اولیه خواهد بود که شرط بر روی آن اعمال خواهد شد بدین معنی متن وارد شده برای فیلتر از 4000 کاراکتر به بالا صورت نخواهد گرفت. برای مثال ستون ROUTINE_DEFINITION به صورت زیر تعریف شده است:

convert(nvarchar(4000),object_definition(o.object_id))AS ROUTINE_DEFINITION

برای نمایش جزئیات بیشتر از کوئری زیر استفاده کنید.

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE  = 'PROCEDURE'

خروجی:

اما برای دریافت نتایج صحیح از sys.procedures به صورت زیر به عنوان نوع بازگشت از تابع OBJECT_DEFINITION(object_id) که نوع برگشتی تعریفی nvarchar(max) خواهد بود استفاده خواهیم کرد.

SELECT OBJECT_NAME(object_id), OBJECT_DEFINITION(object_id)
   	   FROM sys.procedures
	   WHERE OBJECT_DEFINITION(object_id) LIKE '%ali%'

در صورتی که تعداد کاراکترهای استور پروسیجر به بیش از 4000 تا نخواهند رسید کوئری اول همچنان جوابگو شما خواهد بود.


...

امید نصری