ارسال پاسخ 
 
امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
مثالی جالب از تعریف تابع یا Function در SQL Server
01-04-2016, 08:48 PM
ارسال: #1
مثالی جالب از تعریف تابع یا Function در SQL Server
می خواهیم تابعی تعریف کنیم که عدد طبیعی n را از ورودی بگیرد و یک جدول با دو فیلد به نام های sum و sequence به عنوان خروجی تولید کند. با این شرط که n سطر ایجاد کند و برای فیلد sequence در سطر اول عبارت =1، در سطر دوم=1+2 ،..... و در سطر nام =1+2+...+n را قرار دهد. در فیلد sum نیز مجموع اعداد متناظر فیلد sequence را نشان دهد. یعنی در سطر اول 1، در سطر دوم 3، ...و در سطر nام جمع 1 تا n را قرار دهد.
به طور مثال عدد 5 را به عنوان ورودی دریافت و جدول زیر را تولید کند.


[تصویر:  6358757490097501550A00b_com.JPG]

تعریف تابع
تابع را به صورت زیر تعریف می کنیم.

کد:
CREATE function [dbo].[UDFSequence](@number int)
returns @tblSequnce table (
            [SUM] int,
            sequnce nvarchar(max))

as
begin
declare @Counter int
declare @count int
declare @Sequence nvarchar(max)
set @String=''
declare @sum int
set @Counter=1
set @count=1
set @sum=0
        while(@Counter<=@number)
          begin
            while(@count<=@counter)
              begin
                set @sum=@sum+@count
                 if(@count=1)
                   begin
                      set @Sequence='1'
                   end
                 else
                    begin
                        
     set   @Sequence=@Sequence+'+'+convert(nvarchar(10),@count)
                        
                     end
                   set @count=@count+1
                              
                     end
                          
            set @Sequence='='+@Sequence
                
            insert into @tblSequnce
                select @sum,@Sequence

                set @Counter=@Counter+1
                set @count=1
                set @Sequence=''
                set @sum=0
            end

                    return
end

باید دو حلقه تو در تو تعریف کنیم که حلقه اول به اندازه @number تکرار می شود.
در هر بار تکرار حلقه اول یک سطر ایجاد می شود.دستور زیر این کار راانجام می دهد.


کد:
insert into @tblSequnce
select @sum,@Sequence

در هر بار تکرار حلقه دوم یک عدد به دنباله اضافه می شود.دستور زیر این کار را انجام می دهد.

کد:
@Sequence = @Sequence + '+' + convert(nvarchar(10),@count)

در این تابع متغیر @Sequence دنباله را در خود ذخیره می کند.

باید توجه داشت در پایان حلقه اول @Sequence و @sumو @count باید دوباره مقادیر اولیه خود را بگیرند.

کد:
set @count=1
set @Sequence=''
set @sum=0


==================================================
طراحی وب سایت
پروژه های برنامه نویسی تجاری
دانلود پروژه های ASP.NET وب سایتهای آماده به همراه توضیحات
دانلود پروژه های سی شارپ و پایگاه داده SQL Server همراه توضیحات و مستندات
دانلود پروژه های UML نمودار Usecase نمودار class نمودرا activity نمودار state chart نمودار DFD و . . .
دانلود پروژه های حرفه ای پایگاه داده SQL Server به همراه مستندات و توضیحات
پروژه های حرفه ای پایگاه داده Microsoft access به همراه مستندات و توضیحات
دانلود پروژه های کارآفرینی
دانلود گزارشهای کارآموزی کارورزی تمامی رشته های دانشگاهی
قالب تمپلیت های آماده وب سایت ASP.NET به همراه Master page و دیتابیس
برنامه های ایجاد گالری عکس آنلاین با ASP.NET و JQuery و اسلایدشو به همراه کد و دیتابیس SQL کاملا Open Source واکنشگرا و ساده به همراه پایگاه داده
==================================================
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان