آموزش SQL Server
آموزش SQL Server – قسمت پانزدهم
خرداد ۱۳, ۱۳۹۵
آموزش برنامه نویسی اندروید
آموزش اندروید فصل دوم قسمت هفتم – کار با اینتنت
خرداد ۱۶, ۱۳۹۵

آموزش SQL Server – قسمت شانزدهم

آموزش SQL Server

آموزش SQL Server

در قسمت پانزدهم آموزش SQL Server ،توابع (Functions) در SQL Server را به شما آموزش دادیم و همچنین تابعی ساختیم که خروجی آن از نوع جدول بود. دراین قسمت میخواهیم جدول ساخته شده را مشاهده و بررسی کنیم با ما همراه باشید…

آموزش SQL Server – قسمت شانزدهم

توجه : برای مشاهده ی تصاویر در سایز اصلی بر روی آنها کلیک کنید.

خروجی توابع در SQL Server

در آموزش قبل ما تابعی ساختیم که خروجی آن از نوع جدول بود .رفتار جدول را داشت ،حال میخواهیم جدول ساخته شده را مشاهده و بررسی کنیم پس به مثال زیر دقت کنید

Create Function NewTable(@code int)

Returns @Result Table

(

 Code int Identity ,

 Name Nvarchar(50)

)

AS

Begin

Insert @Result

Select Name_Ketab

From Tbl_Ketab

Where Code_Ketab=@code

Return

End

در مثال فوق ما یک تابع با نام NewTable ساخته ایم که یک پارامتر ورودی دریافت میکند  به نام @code که ار نوع Integer نیز میباشد و خروجی ان نیز از نوع جدول و با نام @Result میباشد سپس برای جدول موقت فیلد های Code و Name را تعریف کرده ایم که فیلد کد از نوع Integer و شناسه جدول تعیین شده و فیلد Name که از نوع Nvarchar(50) میباشد سپس کلمات کلیدی As و Begin که دستورات را در بدنه Begin و End مینویسیم که دستورات نوشته شده میگوید مقدار فیلد Name_Ketab از جدول Tbl_Ketab انتخاب کن و در جدول موقت @Result که ساخته ایم درج کن البته به شرط انکه مقدار فیلد Code_Ketab برابر با پارامتر ورودی @code که از کاربر میگیرد برابر باشد.

حال میخواهیم مقداری به تابع داده و نتیجه را مشاهد کنیم پس دستورات زیر را در ادامه ذکر میکنیم

توابع در SQL Server

توابع در SQL Server

همانند تصویر فوق دو خط کدی که هایلایت شده را اضافه میکنیم که یک کوری ساده Select میباشد که تمام مقادیر از تابعی که ساختیم را انتخاب میکند و چون خروجی تابع NewTable از نوع Table تعیین شده میتوان Select را روی ان انجام داد چون خروجی این تابع دیگر رفتاری مثل جداول دارد همچنین یک مقدار به عنوان ورودی نیز به تابع داده ایم که پس از اجرا نتیجه مطلوبی خواهیم داشت.

حال میخواهیم از تمامیه ویژگی هایی که تا به حال اموزش داده ایم مثل پروسیجرها و توابع و .. در این مثال استفاده کنیم.برای این مثال ما دوتابع مجزا میسازیم سپس از ان دوتابع در پروسیجر استفاده میکنیم

Create Function TotalRentPerMonth(@code int,@month int)

Returns int

As

Begin

  Return (

           Select Isnull(Sum (Tbl_Amanat.tedad*Qeymat),0)

                    From Tbl_Ketab,Tbl_Amanat

                    Where Tbl_Ketab.Code_Ketab=Tbl_Amanat.Code_Ketab

                    And Month(Tbl_Amanat.Zaman_Daryaft)=@month

(

End

تابع فوق دو مقدار کد و شماره ماه را از ورودی میگیرد و حاصل ضرب مقدار فیلد قیمت و تعداد کتاب را در ماهی که به امانت رفته شده را بر میگرداند و اگر هم در ان ماه کتابی به امات نگرفته شده باشد مقدار صفر را نمایش میدهد همچنین از Aggrigate Function هم برای بدست اوردن شماره ماه از تازیخ دریافت کتاب استفاده شده.حتی میتوان همین تابع را اجرا کرده و نتیجه را گرفت با استفاده از دستورات زیر

Go

Select dbo.TotalRentPerMonth(7,8)

 

حال تابع دیگری نوشته و از این تابع درون ان استفاده میکنیم

Go

Create Function YearMonthCompare(@code int)

Returns @Result1 Table

(

 MonthNum int ,

 FirstMonth int ,

 SecondMonth int

)

AS

Begin

Declare @count int=1

While(@count<13)

Begin

 Insert @Result1

 Select     @count,dbo.TotalRentPerMonth(@code,@count- 1) ,dbo.TotalRentPerMonth(@code,@count)

Set @count+=1

End

Return

End

در تابع فوق میزان قیمت کتاب هایی که در ماه وارد شده و یک ماه قبل تر را نمایش میدهد در این تابع که خروجی ان به شکل جدول است و سه فیلد برای ان تعیین شده و در بدنه  این تابع یک حلقه While ذکر شده که در ان از ۱ تا ۱۲ را میشمارد به عنوان ۱۲ ماه و هر ماه را توسط شمارنده @counter چک میکند و در دوماه نتیجه را نشان میدهد و همانگونه که مشاهده میکنید در حلقه While از تابعی که در بالا گفته شد استفاده شده و در اخر نیز بدنه حلقه و تابع را میبندیم.

این تابع هم مانند تابع اول میتوان اجرا کرد و نتیجه را مشاهده کرد

Go

Select * From dbo.YearMonthCompare(8)

 

توسط دستورات فوق نتیجه این تابع را هم میتوان مشاهده کرد

توابع در SQL Server

توابع در SQL Server

نتیجه تابع به صورت تصویر فوق است همانگونه که مشاهده میکنید در ماههایی که کتابی با کد ۸  به امانت رفته مقدار فیلد تعداد و قیمت ان کتاب در هم ضرب و سپس جمع میشوند و نمایش داده میشوند.

حال میخواهیم از پروسیجری استفاده کنیم که سود و زیان امانت هارا به ما نمایش دهد پس به صورت زیر دستورات را مینویسیم

Go

Create Procedure FinalYearChart(@code int)

AS

Begin

Select MonthNum,Case

                When FirstMonth < SecondMonth Then 'sood'

                                    When FirstMonth > SecondMonth Then 'Zian'

                                    Else 'Sabet'

                                    End,

                                    Cast(SecondMonth As Float)

From YearMonthCompare(@code)

End

همانگونه که در پروسیجر تعریف شده فوق مشاهده میکنید ما ابتدا یک پارامتر ورودی با عنوان کد تعیین کرده ایم و در ادامه از Case استفاده شده که اگر ماه اول از ماه دوم کوچکتر باشد به معنی سود و اگر بزرگتر بود به عنوان زیان نمایش داده میشود در غیر این صورت مقدار ثابت است و مقدار رشته ایه Sabet را نمایش میدهد و عبارت Cast که تعریف شده بدین معنی است که فیلد SecondMonth را به نوع Float تبدیل میکند چون ممکن است که در توابع بالا نتیجه حاصل ضرب و جمع ها از نوع Int بیشتر شود به همین دلیل بدین صورت انرا به نوع دیگر تبدیل میکنیم.

به عبارت دیگر این پروسیجر شماره ماهها و سود وزیان را براساس تابع قبل که رفتار جدول داردمشخص کرده و نمایش میدهد. پس از نوشتن این دستورات برای دیدن نتیجه باید به مسیر ذخیره پروسیجر برویم که به شرح زیر میباشد Library/Programmability/Stored Procedure و به روی پروسیجر ساخته شده کلیک راست کرده و Execute Stored Procedure.. را کلیک میکنیم و یک مقدار به عنوان کد کتاب به ورودی میدهیم و انرا اجرا میکنیم

توابع در SQL Server

توابع در SQL Server

همانگونه که در تصویر فوق مشاهده میکنید ما یک مقدار ورودی در قسمت Value میدهیم که کد کتاب محسوب میشود و ok را کلیک میکنیم و نتیجه را به صورا فوق خواهیم دید.

مدرس : خانم مهندس داودی نژاد

آموزش SQL Server – قسمت پانزدهم

آموزش SQL Server – قسمت هفدهم

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *