في عالم قواعد البيانات وتطوير قواعد البيانات باستخدام SQL، يعد تحويل استعلام SQL إلى إجراء مخزن (Stored Procedure) خطوة هامة لتحسين أداء الاستعلامات وتسهيل إعادة استخدام الشيفرة. للقيام بذلك، سنقوم بتحليل الاستعلام الحالي وتحويله إلى إجراء مخزن يستفيد من فعاليته وسهولة استخدامه.
لنبدأ بتحليل الاستعلام الحالي:
sqlSelect OpportunityId
from opportunity AS c
left JOIN (
select a.opportunitynameid
from opportunity o
JOIN ApprovalDocument a ON a.opportunitynameid=o.OpportunityId
) AS b ON c.OpportunityId=b.opportunitynameid
Where b.opportunitynameid IS NULL and statecode=0
الهدف هو تحويل هذا الاستعلام إلى إجراء مخزن. سنقوم بإنشاء إجراء مخزن يقوم بإرجاع مجموعة من نتائج محددة. الإجراء المخزن سيأخذ في اعتباره معاملات إضافية لتحديد الشروط. فيما يلي نسخة من الاستعلام المحول إلى إجراء مخزن:
sqlCREATE PROCEDURE GetOpportunityData
AS
BEGIN
SELECT c.OpportunityId
FROM opportunity AS c
LEFT JOIN (
SELECT a.opportunitynameid
FROM opportunity o
JOIN ApprovalDocument a ON a.opportunitynameid=o.OpportunityId
) AS b ON c.OpportunityId = b.opportunitynameid
WHERE b.opportunitynameid IS NULL AND c.statecode = 0
END;
تم إنشاء إجراء المخزن GetOpportunityData
الذي يقوم بإرجاع معرفات الفرص (OpportunityId
) التي تفي بالشروط المحددة. يمكنك استدعاء هذا الإجراء مخزن باستخدام:
sqlEXEC GetOpportunityData;
هذا الإجراء المخزن يسمح بتسهيل إعادة استخدام الشيفرة وتحسين أداء الاستعلامات الخاصة بك في السياقات التي يُستدعى فيها الاستعلام بشكل متكرر.
المزيد من المعلومات
بالطبع، سنقدم المزيد من التوضيح حول الإجراء المخزن الذي تم إنشاؤه وكيفية استخدامه بفاعلية.
إجراء المخزن GetOpportunityData
يتكون من عدة جزء، لنلقي نظرة على كل جزء على حدة:
-
CREATE PROCEDURE:
- يُستخدم لإنشاء إجراء المخزن، وهو مسؤول عن تعريف الهيكل الأساسي للإجراء.
GetOpportunityData
هو اسم الإجراء المخزن.
-
AS BEGIN / END:
- يشير إلى مجموعة الأوامر التي سيقوم الإجراء المخزن بتنفيذها.
- في هذه الحالة، يتم وضع الاستعلام داخل هذا النطاق لتنفيذه عند استدعاء الإجراء.
-
SELECT c.OpportunityId:
- يقوم بتحديد الحقل
OpportunityId
من جدولopportunity
.
- يقوم بتحديد الحقل
-
LEFT JOIN:
- يستخدم الانضمام اليساري (
LEFT JOIN
) لربط الجدولopportunity
بالجدول المشتقb
. - يسمح هذا الانضمام بجلب الصفوف من الجدول الأيسر حتى لو لم تتطابق الشروط.
- يستخدم الانضمام اليساري (
-
WHERE بناء الشرط:
- يقوم بتحديد الشروط التي يجب أن تتوفر لتضمين الصفوف في النتيجة.
b.opportunitynameid IS NULL
يتحقق مما إذا كان هناك تطابق لـopportunitynameid
في الجدول المشتقb
.c.statecode = 0
يتحقق من أن قيمةstatecode
في الجدولopportunity
تكون تساوي 0.
باستخدام هذا الإجراء المخزن، يمكنك استدعاء الاستعلام ببساطة باستخدام:
sqlEXEC GetOpportunityData;
هذا يجلب معرفات الفرص التي تفي بالشروط المحددة ويمكنك استخدامها بفعالية في تحسين أداء الاستعلامات وتنظيم الشيفرة الخاصة بك. يمكنك أيضًا توسيع الإجراء المخزن لاستخدام معاملات إضافية إذا كنت بحاجة إلى تحديد الشروط بشكل دينامي.