SQL Stored Procedures for SQL Server

در SQL Server از Stored Procedures برای ذخیره و اجرای مجموعه‌ای از دستورات SQL استفاده می‌کنیم.
Stored Procedure به ما اجازه میده کوئری‌های تکراری، شرط‌ها، عملیات پیچیده و پارامترها رو در دیتابیس ذخیره کنیم و هر بار بدون نوشتن دوباره اجرا کنیم.

🔹 ساختار کلی

CREATE PROCEDURE ProcedureName @parameter1 DataType, @parameter2 DataType OUTPUT -- اختیاری AS BEGIN -- دستورات SQL SELECT * FROM table_name WHERE column = @parameter1; END;
  • CREATE PROCEDURE → ایجاد پروسیجر

  • @parameter → پارامتر ورودی یا خروجی

  • BEGIN … END → بدنه پروسیجر

🔹 مثال ساده

جدول: Orders

order_idcustomer_idamount
11500
22300
31200

ایجاد Stored Procedure برای نمایش سفارش‌های یک مشتری:

CREATE PROCEDURE GetCustomerOrders @CustomerID INT AS BEGIN SELECT order_id, amount FROM Orders WHERE customer_id = @CustomerID; END;

🔹 اجرای Stored Procedure

EXEC GetCustomerOrders @CustomerID = 1;

📌 خروجی: سفارش‌های مشتری با customer_id = 1

order_idamount
1500
3200

🔹 Stored Procedure با چند دستور

CREATE PROCEDURE UpdateOrderAmount @OrderID INT, @NewAmount DECIMAL(10,2) AS BEGIN UPDATE Orders SET amount = @NewAmount WHERE order_id = @OrderID; SELECT * FROM Orders WHERE order_id = @OrderID; END;

📌 این پروسیجر هم مقدار سفارش رو آپدیت می‌کنه و هم ردیف آپدیت شده رو نمایش میده.

🔹 پارامتر خروجی (OUTPUT)

CREATE PROCEDURE GetTotalAmount @CustomerID INT, @TotalAmount DECIMAL(10,2) OUTPUT AS BEGIN SELECT @TotalAmount = SUM(amount) FROM Orders WHERE customer_id = @CustomerID; END;

اجرا:

DECLARE @Total DECIMAL(10,2); EXEC GetTotalAmount @CustomerID = 1, @TotalAmount = @Total OUTPUT; SELECT @Total AS TotalAmount;

📌 مقدار کل سفارش‌ها در متغیر Total@ ذخیره و نمایش داده میشه.

🔹 نکات مهم

  • Stored Procedure باعث افزایش سرعت، امنیت و خوانایی کوئری‌ها میشه.

  • می‌تونیم از پارامترهای ورودی و خروجی استفاده کنیم.

  • می‌تونیم عملیات شرطی (IF … ELSE) و حلقه (WHILE) داخل پروسیجر داشته باشیم.

  • برای حذف پروسیجر:

DROP PROCEDURE ProcedureName;