رویه ها و فانکشنها در sql

رویه ها و متد ها در SQL Server

توسط admin | گروه sql | 1396/08/07

نظرات 0

 توابع در SQL-SERVER

مقدمه :مروري بر توابع ورويه ها

همان گونه که درزبان هاي برنامه نويسي، امکان تعريف تابع ورويه وجود دارد،درمحيط  Sql-serverنيزاستفاده از آنها امکانپذيراست. توابع ورويه ها جز اشياء هر پايگاه داده هستند و در ديکشنري داده ها نگهداري مي شوند. درابتداي ايجاديک تابع ياروال ،ساختاردستورات آن هاکنترل  شده ،خطايابي انجام مي شود ، سپس نام تابع يارويه ايجادشده درجدول sysobjects ومتن آنهادرجدولsyscomments ذخيره شده ، دراولين اجراکامپايل مي شوند. بنابراين درفراخواني هاي بعدي، درصورتي که نيازبه کامپايل دوباره آنهاازسوي کاربردرخواست نشود،کامپايل نمي شوند. اين دوساختار کاربرد هاي ديگري نيز دارند از جمله:
1- کاهش بار شبکه : به جاي فرستادن متن کامل با يک دستور تقا ضاي اجرا ي يک تابع يا روال را مي توان اعلان کرد.
2- جايگزين هاي مناسب ديدها : مي توان از روال ها و مخصوصا توابع به عنوان جايگزين هاي مناسبي براي ديدها استفاده کرد. يکي از بهترين دلايل استفاده از توابع به جاي ديدها اين است که توابع مانند ديدها به يک  دستور select محدود نيستند و مي توانند هر تعداد دستور را اجرا کنند. مجوزهاي دسترسي که در ديدها مطرح مي شوند در توابع هم قابل پياده سازي هستند .
توابع مورد استفاده در SQL به دو بخش تقسيم مي شوند :
1- توابع سيستمي :
               - توابع رشته اي
       - توابع تاريخ
   - توابع رياضي 
    - سايرتوابع
2 - توابعي که توسط کاربر تعريف مي شوند ((UDF.
-  توابع سيستمي
  توابع رشته اي :
هنگام کار با اطلاعات کاراکتري ، توابع رشته اي زيادي براي پردازش وجود دارد . اکثر توابع رشته اي  بر داده هاي نوع char،nchar،varchar،nvarcharکار مي کند .
برخي از توابع رشته اي که کاربرد بيشتري دارند درجدول صفحه بعد  ذکر شده اند : 
 
مثال1 : ليست دروس دانشکده اي با کد 11 شامل نام ونوع درس:
Select Cname , desc
        From  CRS,CODEFILE
           Where  (Substring(CRS.c#,1,2) =  ‘11’  AND  CODEFILE.field=’crstype’
                                  And  CODEFILE.Type = CRS.CrsType)  
توابع در sql server 
 مثال 2 : نام و نام خانوادگي و شماره ترم دانشجوياني که معدل کل آن ها در سال  83 بيشتر از 17 مي باشد :  
Select  Name , Family , Term+Right(TrmNo,1)
     From STD ,