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

استخدام المتغيرات ( المتحولات ) في قواعد البياناتMySQL-SQL Server-Oracle-DB2

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


يمكنك ان قراءة الدروس السابقة من الرابط التالي:
كما سبق ذكرنا فإن معاملات الخرج مخصصة لإعادة قيم من الإجرائية المخزنة إلى التطبيق الذي نفذ الإجرائية.

اولا استخدام معاملات الخرج في SQL Server :

لتحديد كون أحد المعاملات في إجرائية مخزنة في SQLServer كمعامل خرج، نضيف التعبير OUTPUT وتكون الصيغة من الشكل :
CREATE PROCEDURE procedure_name
(@output_parameter_name INT OUTPUT)…;

مثال :

إذا أردنا إنشاء إجرائية مخزنة تقوم بإعادة اسم شخص صاحب رقم هاتف معين ووضع القيمة المعادة في متحول الخرج theName نكتب الصيغة :
CREATE PROCEDURE getName
(@theNumber varchar(15) , @theName varchar(50) OUTPUT)
AS
BEGIN
SET @theName = (SELECT Name from Phonebook where Number = @theNumber)
END;
نلاحظ أننا استخدمنا التعبير SET لنعطي المتحول theName القيمة التي أعادها الاستعلام. ويمكننا استخدام هذه الإجرائية المخزنة مباشرًة بالشكل:
DECLARE @theName varchar(50);
EXECUTE getName ‘4445467’ , @theName OUTPUT;
PRINT @theName;
قمنا هنا:

  • بالتصريح عن المتحول theName .
  • ثم بتنفيذ الإجرائية المخزنة مستخدمين theName كمتحول خرج لاستلام القيمة التي تعيدها الإجرائية.
  • ثم بإخراج قيمة هذا المتحول.

ثانيا استخدام معاملات الخرج في Oracle :

إذا أردنا كتابة نفس المثال السابق ولكن باستخدام قواعد بيانات Oracle ستكون الصيغة كمايلي:
CREATE OR REPLACE PROCEDURE getName
(theNumber IN varchar(15) , theName OUT varchar(50))
AS
BEGIN
SELECT Name INTO theName from Phonebook
where Number = theNumber;
END;
نلاحظ هنا استخدام التعبيرSELECT INTO لتخزين قيمة Name في الحقل theName , إذا أردنا تنفيذ هذه الإجرائية المخزنة نكتب الصيغة:
SET SERVER ON
DECLARE theName varchar(50);
BEGIN
getName (‘4465873’ , theName);
dbms_output.put_line(theName);
END;
في هذه الحالة:
  • استخدمنا التعبير SET SERVER ON وهو أمر SQL* plus يسمح لنا بتمرير الخرج إلى SQL* plus .
  • ثم صرحنا عن المتحول theName .
  • ثم استدعينا الإجرائية التي أعادت بدورها القيمة المطلوبة إلى المتحول theName .
  • ثم طبعنا المتحول.


ثالثاً استخدام معاملات الخرج في DB2 :

لكتابة نفس المثال السابق باستخدام قواعد بيانات DB2 نستخدم الصيغة :
CREATE PROCEDURE getName
(theNumber INT , OUT theName varchar(50))
P1:BEGIN
SET theName = (SELECT Name from Phonebook where Number = theNumber);
END P1;

كما نلاحظ قمنا بإعطاء المتغيرtheName قيمة معادة من الاستعلام باستخدام التعبير SET فإذا أردنا الآن استدعاء الإجرائية المخزنة نستخدم الصيغة:
CALL (getName ‘5738894’ , ?);

استخدمنا هنا إشارة الاستفهام كبديل عن معامل الخرج مما يمكِّن DB2 من إظهار القيمة التي يعيدها هذا المعامل.

رابعاً استخدام معاملات الخرج في MySQL :

لكتابة نفس المثال في Mysql  نستخدم الصيغة:
CREATE PROCEDURE getName
(IN theNumber varchar(15) , OUT theName varchar(50))
BEGIN
SELECT Name INTO theName from Phonebook
where Number = theNumber;
END;

و لاستدعاء هذه الإجرائية المخزنة نستخدم:
CALL (getName ‘5738894’ ,OUT theName varChar(50));
Select theName;

انتهى القادم سيكون عن الاجراءات المخزنة



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

.