Navigation

شرح 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

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

أضف تعليق:

0 comments: