المتحولات والمعاملات في الاجراءت المخزنة - شرح sql بالعربي المتحولات والمعاملات في الاجراءت المخزنة - شرح sql بالعربي - اقرا معي وتعلم على الانترنت

المتحولات والمعاملات في الاجراءت المخزنة - شرح sql بالعربي

 في المواضيع السابقة ذكرنا ان هناك ثلاثة انواع من المعاملات في الاجراءات المخزنة وهي :
  • معاملات الدخل وتستخدم لتمرير البيانات الى الاجراءات .
  • معاملات الخرج , وتستخدم لإعادة قيم من الاجراءات .
  • ومعاملات الدخل \الخرج, وتستخدم لتأمين المعاملين السابقيين.




قبل الخوض في تفاصيل معاملات الدخول والخرج يجدر بنا ان نتكلم اولا عن المتحولات في SQL بصورة عامة .

المتغيرات (المتحولات) في SQL:

تتشابه المتحولات ( المتغيرات) في SQL في اللغات الاخرى وغرضها الاساسي تخزين قيم في الذاكرة يمكن استرجاعها باستخدام المتحول او ما نسميه المتغير.
يمكن استخدام عبارة تصريح واحدة لأكثر من متحول او متغير في حالة كانت جميع المتغيرات او المتحولات المراد التصريح عنها من نفس النوع والحجم.

في قواعد البيانات DB2 

يجب تعريف المتحولات ضمن التركيب BEGIN END .

اما في Oracle 

فتكتب الصيغة او التصريح قبل التركيب او الكتلة BEGIN END , ويجب ان يتم التصريح عن أي متحول قبل استخدامه في صيغة التصريح تلك.

 انشاء متغير او التصريح عن متغير (متحول) في SQL نستخدم الصيغة التالية:

DECLARE var_name var_type (length);

اذا كانت اكثر من متغير لها نفس النوع والحجم تأخذ الصيغة كما يلي :

DECLARE var1_name, var2_name, var3_name var_type (length);

مثال:
لو اردنا اعلان او تصريح متحول (متغير) صحيح وثلاثة متحولات من نوع varchar سنكتب الصيغة كما يلي:

DECLARE var1 INT;
DECLARE var2, var3, var4 varchar(50);

اعطاء المتغير قيمة او اسناد قيمة للمتحول:

بعد ان تقوم بالاعلان عن المتغير او التصريح به قد تحتاج الى اسناد قيمة له او اعطاءه قيمة , وصيغة الاسناد تختلف من قاعدة الى خرى ففي حالة :

اولا SQL Server تكون الصيغة :

SET @var_name = value;
او
SELECT @var_name = value;

ثانيا في MySQL و DB2 

تستخدم set ولكن بدون اشارة @ قبل اسم المتغير ويتم استبدال المساواة ب := في حالة قواعد بيانات MySQL و Oracle أي تصبح الصيغة كما يلي :
var_name:= value;

كما تستخدم اوراكل وDB2 طريقة خاصة لاسناد قيمة للمتغير من استعلام فيستخدم تعبير select وذلك بالصيغة التالية:

SELECT field_name from tableName Into variable_name
where field_name = 1;
عندما يصبح المتغير له قيمة تستطيع استخدامة في الاستعلام بحرية .

لنعود الان الى المعاملات الخاصة بالاجراء المخزن ماذا لو اردنا اسناد قيم تلقائية للمعاملات الخاصة بالاجراءات المخزنة ؟

ملاحظة قواعد البيانات DB2  لا تدعم القيم التلقائية للمعاملات .
لاسناد قيم تلقائية للمعاملات نستخدم اشارة المساواة بعد تعريف المعامل ونضع القيمة التلقائية كما في حالة SQl Server او باستخدام الكلمة Default كما في حالة اوراكل.

مثال :
لنفترض اننا نريد انشاء الاجراء المخزن الذي يقوم بإدراج اسم وعنوان كل شخص في جدول وليكن اسمة Contacts بحيث يأخذ العنوان القيمة التلقائية  Unknown في حالة عدم اسناد أي قيمة للمتغير اذن ستكون الصيغة كما يلي :

CREATE PROCEDURE Insert Contacts
(@myName varchar(50), @myAddress varchar(50) = ‘Unknown’)
AS Insert Into Contacts (contactName, contactAddress)
Values (@myName, @myAddress);

اما في حالة Oracle :

CREATE OR REPLACE PROCEDURE Insert Contacts
(myName IN varchar(50), myAddress IN varchar(50) DEFAULT ‘Unknown’)
AS
BEGIN
Insert Into Contacts (contactName, contactAddress)
Values (myName, myAddress);
END;

اكتفي الى هنا الموضوع القادم سيكون عن استخدام المتغيرات ( المتحولات ) في قواعد البيانات المختلفة
MySQL , SQL Server , Oracle, DB2

الى ذلك الحين استودعكم الله ....
شارك الموضوع
تعليقات
محتوى قد يهمك

.