آموزش ساخت تابع توابع در sql اس کیو ال تابع فاکتوریل در sql
در این بخش از آموزش کار با sql به ساخت تابع در sql و بکارگیری آنها در کوئری ها می پردازیم.
برای مشاهده تابع های ساخته شده در اس کیو ال به مسیر زیر در sql وارد شوید:
کلیه توابع که در sql ساخته اید در این بخش قرار داده میشوند.
همانطور که در عکس بالا مشاهده میکنید چهار نوع تابع در اس کیو ال وجود دارند :
table valued functions : توابعی که خروجی آنها جدول هستند
scalar valued functions : توابعی که خروجی آنها یک رشته یا عدد هست ( اسکالر )
system functions : توابع سیستمی
در این بخش آموزش کا و ساخت تابع در sql تمرکز بر روی دو نوع اول میباشد.
ساخت تابع در sql :
ساختار تعریف و ایجاد تابع در sql بصورت زیر تعریف میشود:
Create Function پارامترهای ورودی) نام تابع)
Returns نوع مقدار برگشتی
AS
Begin
دستورات
Return مقدار بازگشتی
End
توابع که کاربر اقدام به ایجاد آنها میکند User define function نام دارند.
مثال 1 : تابع فاکتوریل در sql
Create Function Fact (@n TinyInt)
Returns BigInt
AS
Begin
Declare @RtnValue BigInt
Set @RtnValue = 1
while (@n>1)
begin
Set @RtnValue = @rtnvalue * @n
set @n = @n-1
end
Return @RtnValue
END
برای استفاده از توابع درونی باید قبل از نام تابع از کلمه dbo استفاده کنیم.
به اجرای تابع بالا در زیر دقت کنید:
print dbo.fact(4)
استفاده از تابع در پراسیجر ها در sql :
میتوانیم از توابع در ساخت پراسجر در sql و کوئری ها نیز استفاده کنیم .
مثال 2 :برای دیتابیس کارمندان تابعی بنویسید که تاریخ تولد کارمند را دریافت کرده و سن آن را محاسبه و در جدول نمایش دهد:
create function Old( @DOB nvarchar(10))
returns int
as
begin
declare @n int
set @n= convert(int,left( @dob,4))
return 1397-@n
end
در مثال بالا از تابع convert و left استفاده شده است. از تابع بالا میتوانیم بصورت زیر در پراسیجر و کوئری های استفاده کنیم:
select *,dbo.old(DateOfBirth ) from tblEmployee
اجرای کوئری بالا نمایش جدول را بصورت زیر نمایش میدهد:
این دو تابع ایجاد شده در sql در قسمت scaler valued functions ذخیره و نمایش داده میشوند.
نکته : اگر در کنار دستور return در توابع از دستور select استفاده کنید این توابع در بخش table valued functions نمایش داده میشوند.