برنامه نویسی

توابع، رویه‌ها، مکان‌نماها و تریگرها در SQL

راهنمای کامل: توابع، رویه‌ها، مکان‌نماها و محرک‌ها در SQL

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

این راهنما توضیح جامعی در مورد این مؤلفه ها به همراه نمونه کدهای تکه تکه ارائه می دهد.


1. توابع در SQL

الف تابع در SQL یک برنامه ذخیره شده است که می تواند ورودی ها را بپذیرد، عملیات انجام دهد و مقداری را برگرداند. این شبیه به یک رویه است، اما یک تابع باید مقداری را برگرداند و می‌تواند مانند هر عبارت دیگر در کوئری‌ها استفاده شود.

نکات کلیدی:

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

مثالی از تابع (SQL Server Syntax)

بیایید یک تابع ساده بنویسیم که مجذور یک عدد را محاسبه کند.

CREATE FUNCTION dbo.SquareNumber (@Number INT)
RETURNS INT
AS
BEGIN
    RETURN @Number * @Number
END
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استفاده:

SELECT dbo.SquareNumber(4); -- Output: 16
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این تابع یک عدد صحیح را به عنوان ورودی می گیرد، مربع آن را محاسبه می کند و نتیجه را برمی گرداند.


2. رویه ها در SQL

الف رویه (همچنین به نام a رویه ذخیره شده) مجموعه ای از دستورات SQL است که می تواند به عنوان یک واحد اجرا شود. رویه‌ها می‌توانند پارامترها را بگیرند، عملیات‌هایی مانند درج، به‌روزرسانی، حذف و انتخاب را انجام دهند و چندین نتیجه را برگردانند (اما نه مستقیماً یک مقدار واحد مانند توابع).

نکات کلیدی:

  • رویه‌ها لزوماً مقداری را برمی‌گردانند، اما ممکن است چندین مجموعه نتیجه را برگردانند.
  • آنها می توانند چندین عملیات را انجام دهند.
  • رویه ها را می توان به صراحت با استفاده از EXEC فرمان

مثالی از رویه (SQL Server Syntax)

بیایید رویه ای برای به روز رسانی حقوق یک کارمند بنویسیم.

CREATE PROCEDURE dbo.UpdateSalary 
    @EmployeeID INT, 
    @NewSalary DECIMAL
AS
BEGIN
    UPDATE Employees
    SET Salary = @NewSalary
    WHERE EmployeeID = @EmployeeID;
END
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استفاده:

EXEC dbo.UpdateSalary @EmployeeID = 101, @NewSalary = 75000;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این روش طول می کشد EmployeeID و الف NewSalary به عنوان ورودی، حقوق کارمند را به روز می کند و هیچ ارزشی را بر نمی گرداند.


3. نشانگرها در SQL

الف مکان نما در SQL یک شی پایگاه داده است که به شما امکان می دهد هر ردیف را که توسط یک پرس و جو برگردانده شده است را یک به یک بازیابی و پردازش کنید. این به ویژه هنگامی مفید است که شما نیاز به انجام عملیات ردیف به ردیف، مانند به روز رسانی یا حذف دارید، که به راحتی در یک عملیات مبتنی بر مجموعه انجام نمی شود، مفید است.

نکات کلیدی:

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

مثالی از مکان نما (SQL Server Syntax)

بیایید با استفاده از مکان نما مثالی بنویسیم تا حقوق همه کارمندان را 10٪ به روز کنیم.

DECLARE @EmployeeID INT, @Salary DECIMAL;

DECLARE SalaryCursor CURSOR FOR
SELECT EmployeeID, Salary
FROM Employees;

OPEN SalaryCursor;

FETCH NEXT FROM SalaryCursor INTO @EmployeeID, @Salary;

WHILE @@FETCH_STATUS = 0
BEGIN
    UPDATE Employees
    SET Salary = @Salary * 1.1
    WHERE EmployeeID = @EmployeeID;

    FETCH NEXT FROM SalaryCursor INTO @EmployeeID, @Salary;
END

CLOSE SalaryCursor;
DEALLOCATE SalaryCursor;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:

  1. ما مکان نما را اعلام می کنیم SalaryCursor که انتخاب می کند EmployeeID و Salary از Employees جدول
  2. مکان نما را باز می کنیم و ردیف اول را در متغیرها واکشی می کنیم.
  3. در داخل WHILE حلقه، ما حقوق هر کارمند را با ضرب آن در 1.1 (10٪ افزایش) به روز می کنیم.
  4. پس از پردازش تمام سطرها، مکان نما را می بندیم و جابجا می کنیم.

4. تریگرها در SQL

الف ماشه نوع خاصی از رویه ذخیره شده است که به صورت خودکار اجرا می شود (یا “آتش”) زمانی که رویدادهای پایگاه داده خاصی رخ می دهد، مانند INSERT، UPDATE، یا DELETE روی یک میز راه‌اندازها برای اجرای قوانین تجاری، حفظ یکپارچگی داده‌ها یا به‌روزرسانی خودکار جداول مرتبط در هنگام ایجاد تغییرات مفید هستند.

نکات کلیدی:

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

مثالی از Trigger (SQL Server Syntax)

بیایید یک ماشه ایجاد کنیم که به طور خودکار به روز رسانی می کند LastModified هر زمان که حقوق یک کارمند به روز شود، ستون.

CREATE TRIGGER trg_UpdateSalary
ON Employees
AFTER UPDATE
AS
BEGIN
    IF UPDATE(Salary)
    BEGIN
        UPDATE Employees
        SET LastModified = GETDATE()
        WHERE EmployeeID IN (SELECT EmployeeID FROM inserted);
    END
END
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:

  1. ماشه trg_UpdateSalary آتش سوزی پس از یک UPDATE عملیات بر روی Employees جدول
  2. در داخل ماشه، بررسی می کنیم که آیا Salary ستون با استفاده از به روز رسانی شد UPDATE() تابع
  3. اگر Salary به روز شد، ما آن را اصلاح می کنیم LastModified ستون با تاریخ و زمان فعلی (GETDATE()).
  4. این inserted جدول یک جدول ویژه است که حاوی مقادیر جدید پس از عملیات به روز رسانی است و از آن برای به روز رسانی استفاده می کنیم LastModified فیلد برای کارمند(های) اصلاح شده.

خلاصه ای از اجزای SQL

جزء توضیحات مثال مورد استفاده
تابع یک برنامه ذخیره شده که یک مقدار واحد را برمی گرداند و می تواند در کوئری ها استفاده شود. مربع یک عدد را محاسبه کنید.
رویه یک برنامه ذخیره شده که می تواند چندین عمل را انجام دهد (درج، به روز رسانی، حذف) اما مقداری را بر نمی گرداند. حقوق یک کارمند را به روز کنید.
مکان نما مکانیزمی برای تکرار روی یک مجموعه نتیجه ردیف به ردیف، که برای عملیاتی استفاده می‌شود که نمی‌توان به راحتی در SQL مبتنی بر مجموعه بیان کرد. حقوق همه کارکنان را با درصد ثابت به روز کنید.
ماشه یک برنامه ذخیره شده که به صورت خودکار در صورت وقوع رویدادهای پایگاه داده خاص (INSERT، UPDATE، DELETE) اجرا می شود. هنگامی که یک رکورد تغییر می کند، ستون مهر زمانی به طور خودکار به روز شود.

نتیجه گیری

  • توابع و رویه ها برای مدولار کردن منطق تجاری و عملیات قابل استفاده مجدد در پایگاه داده ضروری هستند. توابع بیشتر بر برگرداندن یک مقدار متمرکز هستند، در حالی که رویه ها می توانند چندین کار را انجام دهند اما مقادیر را مستقیماً بر نمی گردند.
  • نشانگرها زمانی استفاده می‌شوند که نیاز به پردازش داده‌ها ردیف به ردیف دارید، اگرچه عملیات مبتنی بر مجموعه معمولاً کارآمدتر هستند.
  • محرک ها امکان پاسخ‌دهی خودکار به رویدادهای پایگاه داده، تضمین یکپارچگی داده‌ها و اجرای قوانین بدون نیاز به مداخله دستی.

هر یک از این مؤلفه ها هدف منحصر به فردی را در ایجاد انعطاف پذیری، نگهداری و کارآمدتر کردن پایگاه داده شما به ویژه در محیط های پیچیده پایگاه داده انجام می دهند.

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا