في المواضيع السابقة ذكرنا ان هناك ثلاثة انواع من المعاملات في
الاجراءات المخزنة وهي :
- معاملات الدخل وتستخدم لتمرير البيانات الى الاجراءات .
- معاملات الخرج , وتستخدم لإعادة قيم من الاجراءات .
- ومعاملات الدخل \الخرج, وتستخدم لتأمين المعاملين السابقيين.
قبل الخوض في تفاصيل معاملات الدخول والخرج يجدر بنا ان نتكلم اولا عن
المتحولات في 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
الى ذلك الحين استودعكم الله ....
إرسال تعليق
لا تبخل علينا باقتراحك او قم بمشاركة الموضوع ليستفيد الاخرين ايضاً شكرا لزيارتك عزيزي الزائر