Stored Procedures یا دستورات ذخیرهشده در SQL، مجموعهای از دستورات SQL هستند که در پایگاه داده ذخیره شده و میتوانند بهطور مکرر اجرا شوند. این دستورات بهصورت یک واحد منطقی ذخیره میشوند و پس از ایجاد آنها میتوان بدون نیاز به نوشتن مجدد کد SQL، آنها را فراخوانی و اجرا کرد.
مزایای استفاده از Stored Procedures در SQL:
-
کاهش تکرار کد:
- با استفاده از Stored Procedure ها میتوان یک بار کدهای پیچیده را نوشت و بهطور مکرر از آنها در برنامههای مختلف استفاده کرد. این امر باعث کاهش کپی و پیست کردن کدهای مشابه در برنامهها میشود.
-
افزایش کارایی:
- Stored Procedure ها در پایگاه داده ذخیره میشوند و تنها یک بار کامپایل میشوند. بنابراین، اجرای آنها سریعتر از نوشتن دوباره دستورات SQL در هر بار است.
- همچنین، از آنجایی که دستورالعملها در سرور پایگاه داده اجرا میشوند، ممکن است نسبت به انجام عملیات از طرف مشتری و ارسال دادهها به سرور، کارایی بالاتری داشته باشند.
-
امنیت بالا:
- با استفاده از Stored Procedure ها میتوان سطح دسترسی کاربران را محدود کرد. به این صورت که کاربران میتوانند تنها به Stored Procedure ها دسترسی داشته باشند، نه جداول اصلی پایگاه داده.
- این میتواند برای محدود کردن نوع دسترسی به دادهها و جلوگیری از تغییرات غیرمجاز مفید باشد.
-
سادگی نگهداری و بهروزرسانی:
- هنگامی که نیاز به تغییر یک Stored Procedure دارید، میتوانید تنها آن را ویرایش کنید بدون اینکه نیازی به تغییر در تمامی کدهای برنامهها و سیستمهایی که از آن استفاده میکنند، باشد. این باعث تسهیل نگهداری و بهروزرسانی میشود.
-
استفاده از ویژگیهای پایگاه داده:
- Stored Procedure ها به شما این امکان را میدهند که از ویژگیهای پیشرفتهای که پایگاه دادهها ارائه میدهند، مانند تراکنشها، متغیرها و ساختارهای کنترلی (مثل if/else، loop ها) بهرهمند شوید.
-
کاهش ترافیک شبکه:
- چون Stored Procedure ها در سرور پایگاه داده اجرا میشوند، تعداد درخواستهای شبکهای کاهش مییابد. این امر بهویژه در سیستمهای توزیعشده که اتصال به پایگاه داده گران تمام میشود، بسیار مفید است.
ساختار کلی دستور CREATE PROCEDURE:
برای ایجاد یک Stored Procedure در SQL، از دستور CREATE PROCEDURE استفاده میشود.
AS
BEGIN
-- دستورات SQL
END;
- procedure_name: نام Stored Procedure.
- دستورات SQL: مجموعهای از دستورات SQL که قرار است در داخل Stored Procedure اجرا شوند.
مثالهای استفاده از Stored Procedures:
1. ایجاد یک Stored Procedure ساده
فرض کنید یک جدول به نام employees دارید و میخواهید یک Stored Procedure ایجاد کنید که اطلاعات یک کارمند را با توجه به شناسه (ID) آن بازیابی کند.
AS
BEGIN
SELECT first_name, last_name, job_title
FROM employees
WHERE employee_id = @EmployeeId;
END;
در این مثال، Stored Procedure یک ورودی به نام @EmployeeId دریافت میکند و سپس جزئیات کارمند را بر اساس آن شناسه برمیگرداند.
برای فراخوانی این Stored Procedure:
2. ایجاد یک Stored Procedure با متغیرهای خروجی
فرض کنید میخواهید تعداد کل کارمندان را شمارش کنید و این مقدار را بهعنوان یک خروجی بازگردانید.
AS
BEGIN
SELECT @TotalEmployees = COUNT(*)
FROM employees;
END;
برای فراخوانی این Stored Procedure و دریافت خروجی:
EXEC GetTotalEmployees @Total OUTPUT;
SELECT @Total AS TotalEmployees;
3. ایجاد یک Stored Procedure با استفاده از تراکنشها
تراکنشها در Stored Procedure ها برای اطمینان از صحت و تمامیت دادهها استفاده میشوند. در این مثال، یک Stored Procedure ایجاد میکنیم که یک تراکنش برای درج دادهها در دو جدول مختلف انجام میدهد.
@FirstName NVARCHAR(50),
@LastName NVARCHAR(50),
@DepartmentName NVARCHAR(50)
AS
BEGIN
BEGIN TRANSACTION;
-- درج اطلاعات کارمند
INSERT INTO employees (first_name, last_name)
VALUES (@FirstName, @LastName);
-- درج اطلاعات بخش
INSERT INTO departments (department_name)
VALUES (@DepartmentName);
-- در صورتی که هیچ مشکلی نباشد، تراکنش را commit میکنیم
COMMIT;
END;
در این مثال، تراکنش تمام عملیات را انجام میدهد و در صورت وقوع خطا، تمام تغییرات برگشت میکنند.
ویژگیهای Stored Procedures:
-
پارامترهای ورودی و خروجی:
- Stored Procedures میتوانند پارامترهای ورودی و خروجی داشته باشند که به شما این امکان را میدهد تا دادههایی را به آنها ارسال کرده یا از آنها دریافت کنید.
-
دستورات شرطی و حلقهها:
- در Stored Procedure ها میتوان از دستورات شرطی مانند IF و حلقهها مانند WHILE برای انجام عملیات پیچیدهتر استفاده کرد.
-
پشتیبانی از تراکنشها:
- میتوانید در Stored Procedure ها از تراکنشها برای مدیریت عملیاتهایی استفاده کنید که نیاز به تغییرات چندگانه در پایگاه داده دارند و نیاز به اطمینان از موفقیت تمام عملیاتها دارند.
-
مدیریت خطا:
- Stored Procedures میتوانند شامل بخشهای مدیریت خطا مانند TRY...CATCH باشند تا خطاها را شناسایی کرده و اقدامات مناسب را انجام دهند.
نتیجهگیری:
Stored Procedures ابزار قدرتمندی هستند که برای سادهسازی کد، بهبود امنیت، افزایش کارایی و تسهیل نگهداری پایگاه داده استفاده میشوند. با استفاده از آنها میتوان دستورات پیچیده را در یک مکان ذخیره کرد و بهطور مکرر و ایمن از آنها در برنامهها و سیستمها استفاده کرد.
