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

توابع در SQL

دوره های مرتبط با این مقاله

مبانی توابع در SQL

وقتی خطوط برنامه ما زیاد می شود درک، پیگیری و رصد، خطایابی یا اشکال زدایی و دیگر اعمال بر روی برنامه بسیار ملال آور و دشوار خواهد شد. توابع ابزاری هستند که به ما در بهبود برنامه کمک شایانی می کنند و برنامه نویسی ساخت یافته را ارائه می دهند، بدین معنا که برنامه اصلی به تکه های منطقی و مجزای کوچکتری تقسیم می شود که توابع نام دارند. یک تابع وظیفه ای شبیه به یک ماشین دارد که یک سری ورودی را می گیرد و با انجام عملیات بر روی ورودی های دریافتی (پارامتر یا آرگومان)، خروجی یا خروجی هایی را برمی گرداند.
تابع یا Function یک تکه کد است که برای اجرای عملیات مجزا بکار می رود. پس از اجرای تکلیف و عملیات محول شده به آن، می توان به نتایج یا خروجی تابع دسترسی داشت. در SQL نیز توابع کاربردی مشابه به توابع در دیگر زبان ها دارند، بدین معنی که می توان از آن ها برای اجرای عملیات مختلف بهره گرفت.
در زبان Transact-SQL، تابع یک شی محسوب می شود. پس از ایجاد یا تعریف آن، تابع در پایگاه داده ذخیره می شود، سپس می توان آن را در صورت نیاز و هر زمان که لازم بود صدا زده و اجرا کرد.


ایجاد پایگاه داده ی جدید

  1. رایانه را راه اندازی کرده و وارد سیستم شوید.
  2. محیط Microsoft SQL Server را راه اندازی نموده و در کادر محاوره ای Connect to Server، دکمه ی Connect را کلیک نمایید.
  3. در پنجره ی Object Explorer، گره Databases را باز کنید.
  4. به منظور ایجاد یک پایگاه داده ی جدید، بر روی Databases راست کلیک نموده سپس گزینه یNew Database... را انتخاب نمایید.
  5. در کادر متن Database Name، واژه ی IceCreamShop را وارد نمایید.
  6. OK را کلیک نمایید.
  7. حال به پنجره ی Object Explorer مراجعه کرده، بر روی Databases راست کلیک کنید و گزینه ی Refresh را انتخاب نمایید.
  8. گره Databases و به دنبال آن IceCreamShop را باز کنید.
  9. در زیر IceCreamShop، بر روی Security راست کلیک نموده سپس مکان نمای موس را بر روی New قرار دهید. اکنون Schema... را انتخاب کنید.
  10. در کادر متن Schema Name، واژه ی Payroll را به عنوان نام شِما وارد کنید.
  11. OK را کلیک کنید.

تعریف یک تابع

راه های مختلفی برای اقدام به تعریف یا ایجاد یک تابع وجود دارد:
1. در Object Explorer، گره پایگاه داده ی دلخواه را باز کنید. بعد از آن گره Programmatically را باز نمایید. گره Functions را باز کنید. بر روی Scalar-Valued Function راست کلیک کرده و New Scalar-Valued Function... انتخاب کنید.


آموزش SQL

2. کد نمونه برای شما ایجاد خواهد شد:


-- ================================================
-- Template generated from Template Explorer using:
-- Create Scalar Function (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		< author,,name>
-- Create date: < create date, ,>
-- Description:	< description, ,>
-- =============================================
CREATE FUNCTION < scalar_function_name, sysname, functionname> 
(
	-- Add the parameters for the function here
< @param1, sysname, @p1> < data_type_for_param1, , int>
)
RETURNS < function_data_type, ,int>
AS
BEGIN
	-- Declare the return variable here
	DECLARE < @resultvar, sysname, @result> < function_data_type, ,int>
	-- Add the T-SQL statements to compute the return value here
	SELECT < @resultvar, sysname, @result> = < @param1, sysname, @p1>
	-- Return the result of the function
	RETURN < @resultvar, sysname, @result>
END
GO

3. سپس می توانید آن مطابق نیاز خود ویرایش کنید.
4. یک Query Editor جدید باز کنید. پنجره ی Templates Explorer را باز کرده و گره Function را با کلیک بر روی آن باز کنید. مکان نمای موس را روی Create Scalar Function (New Menu) قرار داده، بر روی آن کلیک کنید، سپس عبارت را کشیده و در Query Editor جای گذاری نمایید.


-- ================================================
-- Template generated from Template Explorer using:
-- Create Scalar Function (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		< author,,name>
-- Create date: < create date, ,>
-- Description:	< description, ,>
-- =============================================
CREATE FUNCTION < scalar_function_name, sysname, functionname> 
(
	-- Add the parameters for the function here
< @param1, sysname, @p1> < data_type_for_param1, , int>
)
RETURNS < function_data_type, ,int>
AS
BEGIN
	-- Declare the return variable here
	DECLARE < @resultvar, sysname, @result> < function_data_type, ,int>
	-- Add the T-SQL statements to compute the return value here
	SELECT < @resultvar, sysname, @result> = < @param1, sysname, @p1>
	-- Return the result of the function
	RETURN < @resultvar, sysname, @result>
END
GO

5. و یا یک Query Editor جدید باز کرده و شروع به کدنویسی می کنید.
در زبان Transact-SQL، دستور کلی تعریف یک تابع به شرح زیر می باشد:


CREATE FUNCTION SchemaName.FunctionName()

تخصیص یک اسم به تابع

همان طور که پیش تر گفته شد، در زبان T-SQL، تابع حکم یک شی را دارد. از این رو، باید یک اسم برای آن انتخاب کرد. در مقاله ی حاضر از قوانین زیر برای نام گذاری توابع استفاده می کنیم:


  1. اسم تابع می بایست با یک "_" یا حرف آغاز شود.
  2. پس از انتخاب زیر خط یا حرف به عنوان کاراکتر آغازین اسم تابع، می توان ترکیبی از زیرخط ها، حروف یا اعداد را بکار برد.
  3. در اسم تابع، استفاده از کاراکترهای ویژه نظیر !، @، #، $، %، ^، & یا * مجاز نمی باشد.
  4. از بکار بردن space نیز در اسم توابع خودداری شود.
  5. چنانچه اسم تابع متشکل از چندین واژه است، در آن صورت هر کلمه با حرف بزرگ آغاز می شود.

دریافت یا بازگردانی یک خروجی از تابع

برای اینکه تابع مفید باشد، باید یک خروجی برگرداند (یا نتیجه ای را تولید کند). در زمان ایجاد تابع، باید نوع مقدار بازگشتی تابع را نیز مشخص کنید. برای این منظور، پس از اسم تابع کلیدواژه ی RETURNS و به دنبال آن نوع داده ی مقدار بازگشتی را مشخص نمایید.


مثال:
CREATE FUNCTION Administration.Addition()
RETURNS Decimal(6,3)

پس از تعریف نوع داده ی مقدار بازگشتی تابع، می توانید یک بدنه برای آن ایجاد کنید. بدنه ی تابع با کلیدواژه ی BEGIN آغاز شده و با کلیدواژه ی END نیز پایان می یابد.


مثال:
CREATE FUNCTION Administration.Addition()
RETURNS Decimal(6,3)
BEGIN
END

در صورت تمایل، می توانید کلیدواژه ی AS را پیش از کلیدواژه ی BEGIN تایپ کنید:


CREATE FUNCTION Administration.Addition()
RETURNS Decimal(6,3)
AS
BEGIN
END

بین دو کلیدواژه ی BEGIN و END، بخشی است که بدنه ی تابع را تشکیل می دهد. در این بخش عملیاتی که تابع انجام می دهد را مشخص می کنید. پس از انجام این کار، درست قبل از کلیدواژه ی END، بایستی مقداری را که تابع بازمی گرداند، مشخص نمایید. برای این منظور ابتدا کلیدواژه ی RETURN و بلافاصله پس از آن عبارت را تایپ می کنید. فرمول:


CREATE FUNCTION Administration.Addition()
RETURNS Decimal(6,3)
AS
BEGIN
    RETURN Expression
END

مثال:
CREATE FUNCTION GetFullName()
RETURNS nvarchar(100)
AS
BEGIN
	RETURN N'Doe, John'
END

آموزش کاربردی: ایجاد تابع

1. در پنجره ی Object Explorer، بر روی پایگاه داده ی IceCreamShop راست کلیک کرده، سپس بر روی دکمه ی New Query کلیک نمایید.
2. به منظور ایجاد یک تابع جدید، دستور زیر را تایپ کنید:


USE IceCreamShop;
GO
CREATE FUNCTION Payroll.CalculateWeeklySalary()
RETURNS Decimal(8, 2)
AS
BEGIN
    RETURN 880.44
END;
GO

3. برای اجرای دستور مورد نظر، در نوار ابزار SQL Editor، بر روی دکمه ی آموزش SQL کلیک نمایید.
4. در پنجره ی Object Explorer، گره IceCreamShop را باز کرده، سپس گره Programmability را باز نمایید. حال گره Functions و به دنبال آن Scalar-Valued Functions را باز کنید. بی شک متوجه وجود گره CalculateWeeklySalary خواهی شد.


آموزش SQL

فراخوانی تابع

پس از ایجاد تابع، فقط از مقدار بازگشتی یا خروجی آن استفاده می کنیم. استفاده از تابع و فراخوانی آن هر دو یک معنی را دارند. به منظور فراخوانی یک تابع، ابتدا می بایست یک اسم برای آن درنظر بگیرید. برای این منظور، اسم schemaای که پایگاه داده به آن تعلق دارد را مشخص کرده، عملگر نقطه را درج نمایید، سپس اسم تابع و بلافاصله پس از آن پرانتز را درج کنید. فرمول مورد استفاده به ترتیب زیر می باشد:


SchemaName.FunctionName()

همچنین می توانید اول اسم پایگاه داده ای که تابع در آن ایجاد شده را درج نمایید. فرمول:


DatabaseName.SchemaName.FunctionName()

می توانید خروجی یا مقدار بازگشتی تابع را مطابق میل خود مورد استفاده قرار دهید. به عنوان مثال، می توانید به وسیله ی کلیدواژه ی PRINT و SELECT مقدار تابع را در Query Editor نمایش دهید. در زیر مثالی را مشاهده می کنید که در آن تابع Addition() صدا زده می شود:


PRINT Exercise.dbo.GetFullName();

برای فراخوانی تابع، در پنجره ی Object Explorer بر روی اسم آن راست کلیک کرده، مکان نمای موس را بر روی Script Function As, SELECT To قرار دهید، سپس گزینه ی New Query Editor Window را انتخاب کنید.

آموزش فراخوانی تابع/

1. در داخل پنجره ی Query Editor کلیک کرده، با زدن کلیدهای Ctrl + A به طور همزمان، کل کد موجود در پنجره را انتخاب کنید.
2. برای اجرای تابع، دستور زیر را تایپ کنید:


PRINT IceCreamShop.Payroll.CalculateWeeklySalary();
GO

3. حال کلید F5 را فشار داده تا کد اجرا شود.


آموزش SQL

4. برای مشخص کردن یک اسم برای ستونی که قرار است مقدار بازگشتی تابع را در خود ذخیره کند، فراخوانی تابع را به صورت زیر ویرایش کنید:


SELECT IceCreamShop.Payroll.CalculateWeeklySalary() AS [Weekly Salary];
GO

5. دکمه ی F5 را برای اجرای دستور فشار دهید:


آموزش SQL

نگهداشت تابع

به این دلیل که زبان T-SQL با تابع به عنوان یک شی برخورد می کند، تابع مانند شی نیاز به نگهداشت دارد. عملیاتی که در راستای نگهداشت تابع انجام می دهیم عبارت است از تغییر اسم، ویرایش یا حذف تابع.


ویرایش اسم تابع

پس از ایجاد و اجرای تابع، خواهید دید که تابع مورد نظر در گره Scalar-Valued Functions با اسمی که به آن تخصیص داده اید، ذخیره می شود. در صورت تمایل می توانید اسم تابع را تغییر دهید در عین حال کارایی و عملکرد آن را حفظ کنید.
به منظور ویرایش اسم تابع، به پنجره ی Object Explorer مراجعه کرده و بر روی تابع مورد نظر راست کلیک کنید، سپس گزینه ی Rename را انتخاب نمایید. اکنون اسم دلخواه را تایپ کرده و کلید Enter را فشار دهید.


حذف تابع

پس از ایجاد تابع و بهره وری از آن، می توانید تابع مورد نظر را حذف کنید.
برای حذف تابع به صورت ویژوال، در پنجره ی Object Explorer تابع مورد نظر را در بخش مربوط به توابع یافته، بر روی آن راست کلیک کنید و سپس گزینه ی Delete را انتخاب نمایید.
در پی این کار کادر محاوره ای Delete Object نمایان می شود. اگر همچنان قصد حذف تابع را دارید، روی دکمه ی OK کلیک کنید و در غیر این صورت Cancel را انتخاب نمایید.
برای حذف تابع با کدنویسی:


  1. در Query Editor، دستور یا عبارت کلیدی DROP FUNCTION و به دنبال آن اسم تابع را درج نمایید و سپس دستور ذکر شده را اجرا کنید.
  2. در پنجره ی Object Explorer، بر روی اسم تابع راست کلیک کرده، مکان نمای موس را روی Script Function As, DROP To قرار داده و بعد گزینه ی New Query Editor Window را کلیک کنید.
  3. یک پنجره ی Query Editor جدید ویژه (مربوط به) پایگاه داده ای که دربردارنده ی تابع مورد نظر است باز کنید. پنجره ی Templates Explorer را نمایش داده، گره Function را باز نمایید. گره Drop Function را کشیده و در محیط Query Editor تهی جای گذاری نمایید.

آموزش کاربردی: حذف تابع

  1. در پنجره ی Object Explorer، در زیر گره Scalar-Valued Functions، بر روی Payroll.CalculateWeeklySalary راست کلیک کرده و گزینه ی Delete را انتخاب نمایید.
  2. در کادر محاوره ای Delete Object، بر روی دکمه ی OK کلیک کنید.

اعلان متغیرهای محلی

همان طور که پیش تر گفته شد، در بدنه ی تابع، آن عملیات یا کار معینی که تابع مورد نظر بایستی انجام دهد را مشخص و تعریف می کنیم. ساده ترین کاری که یک تابع می تواند انجام دهد، باز گرداندن یک مقدار عددی است. برای این منظور می بایست عدد مورد نظر را در سمت راست واژه ی کلیدی RETURN تایپ نمایید.


مثال:
CREATE FUNCTION Administration.Addition()
RETURNS int
BEGIN
    RETURN 1
END

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


مثال:
CREATE FUNCTION Administration.Addition()
RETURNS int
BEGIN
    DECLARE @Number1 int
    SET @Number1 = 588
    RETURN @Number1 + 1450
END

آموزش کاربردی: اعلان متغیرهای محلی

1. در داخل Query Editor کلیک نموده، کلیدهای Ctrl + A را همزمان فشار دهید.
2. برای ایجاد تابع جدید، کد زیر را تایپ کنید:


CREATE FUNCTION Payroll.CalculateWeeklySalary()
RETURNS Decimal(8, 2)
AS
BEGIN
	DECLARE
		@HourlySalary Decimal(8, 2),
		@WeeklyHours Real,
		@FullName varchar(100);
		SET @HourlySalary = 24.15;
		SET @WeeklyHours = 42.50;
	RETURN @HourlySalary * @WeeklyHours
END;
GO

3. با زدن کلید F5، دستور را اجرا نمایید.


آموزش SQL

4. بار دیگر در داخل Query Editor کلیک کرده و با استفاده از میانبر Ctrl + A تمامی دستورات موجود را انتخاب کنید.
5. برای فراخوانی تابع، کد زیر را وارد نمایید:


SELECT IceCreamShop.Payroll.CalculateWeeklySalary()
AS [Weekly Salary];
GO

6. با زدن کلید F5 کد را اجرا کنید.


آموزش SQL

توابع و درج داده

می توانید تابع را در فرایند درج و وارد کردن اطلاعات در جدول پایگاه داده نیز مشارکت دهید. به عنوان مثال، می توان تابع را فراخوانده، سپس مقدار برگشتی آن را به ستون تخصیص داد. در ابتدای امر یک تابع اختصاصی ایجاد و فراخوانی کرده و یا یک تابع درون ساخته و توکار این زبان را بکار می بریم. به طور معمول، بهترین روش یک جستجوی آنلاین است که طی آن متوجه می شویم آیا عملیاتی که می خواهید کد آن را بنویسید از قبل ایجاد و اجرا شده یا خیر. استفاده از یک تابع از پیش نوشته شده (توکار)، بی شک کم دردسر تر بوده و سرعت کار را بالا می برد.
همچنین می توان تابع را در یک عملیات مورد استفاده قرار داده و نتیجه را به عنوان یک مقدار به فیلد مورد نظر تخصیص داد. حتی می توان یک تابع را صدا زد که یک یا چند آرگومان می پذیرد؛ در این خصوص لازم است قوانین حاکم بر (مربوط به) ارسال آرگومان به تابع را در زمان فراخوانی آن رعایت کرد.


پارامترهای یک تابع

برای اینکه بتواند وظیفه ی محول شده را به انجام برساند، یک تابع گاهی به مقادیری نیاز دارد. به بیانی دیگر، هنگامی که تابع جدید ایجاد می کنیم، علاوه بر متغیرهای محلی، می خواهیم کدی که تابع را صدا می زند، مقادیر لازم برای اجرای عملیات یا تکلیف محول شده را ارائه نماید. فرض کنید می خواهیم تابعی تعریف کنیم که آدرس ایمیل کارکنان را زمانی که کاربر اسم و اسم خانوادگی را وارد می کند، فراهم نماید. به هنگام ایجاد تابع، هیچ اطلاعی از اسم کارکنان، از جمله آن هایی که هنوز استخدام نشده اند، نداریم. در این مورد به خصوص، می توان کل تابع را تعریف کرده، اما یک یا چند placeholder یا مکان نگهدار برای مقادیری که در زمان فراخوانی تابع فراهم می شود، درنظر گرفت.
مقدار خارجی که در اختیار تابع قرار داده می شود، پارامتر خوانده می شود. یک تابع می تواند (ممکن است) چندین پارامتر دریافت کند (بیش از یک پارامتر داشته باشد). از اینرو در زمان ایجاد تابع جدید، بایستی مشخص کنید چه تعداد و چه پارامتری (از چه نوعی) می خواهید به آن ارسال کنید.


تابع دارای پارامتر ورودی

همان طور که قبلا مشاهده کردیم، به دنبال اسم تابع پرانتز قرار می گیرد. در صورتی که تابع هیچ مقدار خارجی را مورد استفاده قرار نمی دهد (هیچ پارامتر ورودی نمی گیرد)، در آن صورت پرانتز خالی می ماند. چنانچه تابع دارای تعدادی مقدار خارجی است، در زمان ایجاد تابع، می بایست اسم و نوع مقدار پارامتر را مشخص نمایید.
پیش از اسم پارامتر، همانند اسم متغیر، علامت @ را تایپ کنید.


مثال:
CREATE FUNCTION Administration.Addition(@Number1 Decimal(6,2))

زمانی که تابع پارامتر ورودی می پذیرد، می توانید آن پارامتر را در بدنه ی تابع بکار ببرید، گویا کاملا از مقدار آن اطلاع دارید، البته به شرط اینکه نوع مقدار را در نظر داشته باشید.


مثال:
CREATE FUNCTION Administration.Addition(@Number1 Decimal(6,2))
RETURNS Decimal(6,2)
BEGIN
    RETURN @Number1 + 1450
END

فراخوانی تابعی دارای پارامتر ورودی

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


مثال:
آموزش SQL

تابعی با چندین آرگومان

بجای تنهای یک پارامتر، می توان تابعی اعلان کرد که تا چند آرگومان یا پارامتر ورودی می پذیرد. در چنین نمونه ای، پارامترهای ورودی را داخل پرانتز تابع توسط ویرگول از هم جدا کنید.


مثال:
CREATE FUNCTION Administration.Addition(@Number1 Decimal(6,2), @Number2 Decimal(6,2))

یادآور می شویم که می توان پارامترهای ورودی تابع را داخل بدنه ی آن بکار گرفت گویی مقدار آن از پیش برای شما مشخص می باشد. همچنین می توانید متغیرهای محلی را اعلان نموده و آن ها را همراه با پارامترهای ورودی تابع خود بکار برد


مثال:
CREATE FUNCTION Administration.Addition(@Number1 Decimal(6,2),
			                @Number2 Decimal(6,2))
RETURNS Decimal(6,2)
BEGIN
    DECLARE @Result Decimal(6,2)
    SET @Result = @Number1 + @Number2
    RETURN @Result
END;
GO

در زمان فراخوانی تابعی که چندین پارامتر ورودی می گیرد، داخل پرانتزهای تابع، به ازای هر پارامتر یک مقدار ارائه دهید (به هر پارامتر یک مقدار ارسال نمایید)، البته به همان ترتیبی که در پرانتز تابع لیست شده است.


مثال:
آموزش SQL

همچنین می توانید اسم متغیرهای مقداردهی اولیه و اعلان شده را به عنوان پارامتر به تابع ارسال کنید. در زیر مثالی را مشاهده می کنید که تابع بالا را فراخوانی می کند:


DECLARE @Nbr1 Decimal(6,2),
        @Nbr2 Decimal(6,2)
SET @Nbr1 = 4268.55
SET @Nbr2 =26.83
SELECT @Nbr1 As First,
       @Nbr2 As Second,
       Exercise.Administration.Addition(@Nbr1, @Nbr2) AS Result

نتیجه ی زیر را بدست می دهد:
آموزش SQL

آموزش کاربردی: ایجاد توابع با آرگومان های ورودی

1. در داخل Query Editor کلیک کرده، کلیدهای Ctrl + A را فشار دهید.
2. برای افزودن آرگومان، کد زیر را تایپ کنید:

CREATE FUNCTION Payroll.CalculateWeeklySalary(@WeeklyHours Decimal(6,2),
                                      @HourlySalary SmallMoney)
RETURNS Decimal(8, 2)
AS  
BEGIN
    DECLARE @Weekly SmallMoney
    SELECT  @Weekly = @WeeklyHours * @HourlySalary
    RETURN @Weekly
END;
GO

3. کلید F5 را فشار داده تا کد اجرا شود.

آموزش SQL

4. کد جاری را پاک کرده و کد زیر را جایگزین آن نمایید:


DECLARE @Hours Decimal(5,2),
        @Hourly SmallMoney
SELECT  @Hours = 42.50
SELECT  @Hourly = 18.62
SELECT  'Hermine Singh' As [Employee Name],
        @Hours As [Weekly Hours],
        @Hourly As [Hourly Salary],
        RealEstate1.Payroll.CalculateWeeklySalary(@Hours, @Hourly)
        	AS [Weekly Salary];
GO

5. کلید F5 را فشار داده تا مجموعه دستورات اجرا شود.


آموزش SQL

آرگومان های پیش فرض

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


مثال:
USE Exercise;
GO
CREATE FUNCTION CalculateTaxAmount(@Price money, @Rate decimal(6, 2))
RETURNS decimal(6, 3)
AS
BEGIN
    DECLARE @ResultVar money
    SELECT @ResultVar = @Price * @Rate / 100
    RETURN @ResultVar
END
GO

مثالی از فراخوانی تابع:
USE Exercise;
GO
PRINT dbo.CalculateTaxAmount(140.00, 5.75);
PRINT dbo.CalculateTaxAmount(195.95, 5.75);
PRINT dbo.CalculateTaxAmount(250.00, 7.55);
PRINT dbo.CalculateTaxAmount(125.95, 5.75);
GO

خروجی زیر را تولید می کند:
8.05
11.27
18.88
7.24

اگر تابعی بارها با آرگومانی با مقدار یکسان (آرگومانی که هر بار مقداری یکسان به آن ارسال می شود) فراخوانی می شود، می توانید یک مقدار پیش فرض برای آن آرگومان مشخص کنید. در زمان صدا زدن تابع، می توان مقدار آرگومان را حذف کرد.
جهت تعریف مقداری پیش فرض برای یک آرگومان، در پرانتز تابع مورد نظر، پس از اسم و نوع داده ای آرگومان، ابتدا " = " و به دنبال آن مقدار دلخواه را تایپ نمایید.


مثال:
USE Exercise;
GO
CREATE FUNCTION CalculateTaxAmount(@Price money, @Rate decimal(6, 2) = 5.75)
RETURNS decimal(6, 2)
AS
BEGIN
    DECLARE @ResultVar money
    SELECT @ResultVar = @Price * @Rate / 100
    RETURN @ResultVar
END
GO

در زمان فراخوانی تابعی که دارای آرگومانی با مقدار پیش فرض می باشد، دیگر نیازی به ارسال مقدار به آن آرگومان نیست. البته در صورت تمایل، ارسال مقدار به آن مانعی ندارد. بنابراین، به هنگام فراخوانی چنین تابعی، در جای (placeholder) آرگومان، کافی است کلیدواژه ی DEFAULT را تایپ نمایید.


مثال:
                            
USE Exercise;
GO
PRINT dbo.CalculateTaxAmount(140.00, DEFAULT);
PRINT dbo.CalculateTaxAmount(195.95, 5.75);
PRINT dbo.CalculateTaxAmount(250.00, 7.55);
PRINT dbo.CalculateTaxAmount(125.95, default);
GO

آموزش کاربردی: پایان درس

1. داخل پنجره ی Query Editor کلیک نموده و میانبر Ctrl + A را بکار ببرید.
2. دستورات زیر را تایپ کنید:


USE master;
GO
DROP DATABASE IceCreamShop;
GO
DROP DATABASE University1;
GO

3. کلید F5 را برای اجرا کد فشار دهید.
4. از محیط Microsoft SQL Server خارج شوید.

  • 8017
  •    1640
  • تاریخ ارسال :   1394/11/09

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

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

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .