آشنایی کامل با توابع تعریف شده توسط کاربر در SQL Server 2019 (بخش اول)
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آشنایی کامل با توابع تعریف شده توسط کاربر در SQL Server 2019 (بخش اول):
در این جلسه میخواهیم در مورد توابع تعریف شده توسط کاربر (User Defined Function) صحبت کنیم. قبلا در مورد توابعی که درون خود sql server وجود دارد و از قبل تعریف شده توضیح دادهایم. مانند توابع رشتهایی، تاریخ و زمان و توابع کار روی دادههای عددی و... . میخواهیم توضیح دهیم که شما چگونه میتوانید درون برنامهها و دیتابیس خود تابع تعریف کنید و از آن در دیتابیسهای مختلف استفاده کنید. مسلما اولین چیزی که مهم باشد این است که چگونه میتوانیم تابع تعریف کنیم و بعد از تعریف تابع چگونه میتوان از آن تابع استفاده کنیم. از نظر ساختار دو دسته تابع داریم، دسته اول توابعی هستند که میتوانند دادههای معمولی مثل داده عددی یا رشتهایی را برگردانند و دسته دوم توابعی هستند که میتوانند در خروجی یک جدول را برگردانند.
با ساختار کلی تابع شاید در زبانهای مختلف برنامه نویسی آشنا شده باشید. توابع شبیه یک دستگاه هستند که میتوانند یک ورودی داشته باشند و در نهایت یک خروجی را برگردانند. شاید بپرسید که store procedure هم مانند توابع هستند و همین کار را میتوانستند انجام دهند، آنها هم وروردی داشتند و عملی را انجام میدادند و در نهایت خروجیای را برمیگردانند، بله بسیار شبیه هم هستند. اما یک سری تفاوتها وجود دارد که باعث میشود در استفاده کردن از آنها حق انتخاب داشته باشیم و بتوانیم با توجه به شرایط بهترین را انتخاب کنیم. اینکه در کجا از store procedure استفاده کنیم و کجا از توابع استفاده کنیم. اولین تفاوتی که بین store procedure و توابع میباشد این است که تابعها حتما خروجی دارند اما store procedure میتواند خروجی داشته باشد یا اصلا نداشته باشد یا حتی میتواند چندین خروجی داشته باشد. توابع میتوانند پارامتر ورودی داشته باشند در صورتی که store procedureها میتوانند پارامتر ورودی و خروجی داشته باشند. یعنی همان output که در store procedruteها وجود داشت. ما میتوانستیم یک ظرف خالی را به store procedure بفرستیم و به کمک دستور output آن را برگردانیم. در صورتی که در توابع این مسئله وجود ندارد. توابع را میتوانیم داخل store procedureها فراخوانی کنیم اما برعکسش شدنی نیست یعنی نمیتوانیم store procedure را در توابع فراخوانی کنیم. توابع فقط میتوانند، انتخاب کنند. در صورتی که store procedureها عملیاتی مانند insert, Update, Delete را هم انجام میدهند. اما کار توابع بازیابی اطلاعات میباشد. Store procedureها میتواند try-catch داشته باشند. با دانستن این نکات میتوانید تصمیم بگیرید در چه مواقعی از توابع استفاده کنید و چه مواقعی از store procedureها استفاده کنید. در اینجا متوجه شدیم که store pricedureها از توابع قویتر هستند. اما نکته مهم این است که توابع را در select میتوانیم براحتی استفاده کنیم و از آنها خروجی بگیریم. پس هر زمان که نیاز بود یک عملی انجام شود و خروجی را برگرداند میتوانیم از توابع استفاده کنیم.
امیدواریم که این آموزش، برای شما دوستان درسمنی عزیز مفید باشد، درصورت سوال و یا مشکل میتوانید به انجمن پرسش و پاسخ مراجعه کنید. پیشنهادات و انتقادات خود را در بخش نظرات برای ما ارسال کنید.
امید آنکه بیش از پیش موفق و مؤید باشید.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.