TOP

SQL Stored Procedures لـ SQL Server

ما هو Stored Procedure؟

Stored Procedure (إجراء مخزن) عبارة عن كود SQL مُجهز يمكن تخزينه بحيث يمكن استخدام الكود مرارًا وتكرارًا.

لذلك ، إذا كان لديك استعلام SQL تكتبه مرارًا وتكرارًا ، فاحفظه كإجراء مخزن ثم اتصل به لتنفيذه.

يمكنك أيضًا تمرير المعلمات إلى إجراء مخزن بحيث يعمل الإجراء المخزن على قيم المعلمات التي تم تمريرها.


Stored Procedure بناء الجملة

CREATE PROCEDURE procedure_name
AS 
sql_statement
GO

تنفيذ Stored Procedure

EXEC procedure_name

قاعدة بيانات مظاهرة

فيما يلي نموذج من جدول "Customers" ("العملاء") لقاعدة البيانات "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Stored Procedure مثال

ينشئ استعلام SQL التالي إجراءً مخزنًا باسم "SelectAllCustomers" يحدد كافة السجلات من جدول العملاء:

CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO

دعنا ننفذ الإجراء المخزن أعلاه على النحو التالي:

EXEC SelectAllCustomers

Stored Procedure بمعامل واحد

ينشئ استعلام SQL التالي إجراءً مخزنًا يحدد العملاء من مدينة معينة من جدول العملاء:

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO

دعنا ننفذ الإجراء المخزن أعلاه على النحو التالي:

EXEC SelectAllCustomers @City = 'London'

Stored Procedure مع العديد من المعلمات

من السهل جدًا تكوين معلمات متعددة ، أي سرد ​​كل معلمة ونوع بيانات مفصولين بفاصلة كما هو موضح أدناه.

تنشئ عبارة SQL التالية إجراءً مخزنًا يختار العملاء من مدينة معينة برمز بريدي محدد من جدول العملاء:

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO

دعنا ننفذ الإجراء المخزن أعلاه على النحو التالي:

EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP'