310 likes | 822 Views
PL/SQL تعريف المتغيرات. مقدمة في PL/SQL. ماهي لغة PL/SQL ؟ هي عبارة عن تطوير للغة SQL حيث أعطت المرونة ل SQL بحيث يمكن كتابة جمل متعددة مثل استخدام متغيرات وجمل الدوران والشرط...إلخ
E N D
مقدمة في PL/SQL • ماهي لغة PL/SQL ؟ هي عبارة عن تطوير للغة SQL حيث أعطت المرونة ل SQL بحيث يمكن كتابة جمل متعددة مثل استخدام متغيرات وجمل الدوران والشرط...إلخ • تتألف PL/SQL من مجموعة منفصلة من الوحدات تسمى Modules كل منها له وظيفة معينة للوصول إلى الهدف النهائي من البرنامج.
مقدمة في PL/SQL • تنقسم (Modules) إلى قسمين : • وحدة برمجية غير مسماةAnonymous Block: هذه الوحدة ليس لها اسم محدد ولا تخزن في قاعدة البيانات ولكن يتم تحميلها في الذاكرة واستخدامها يكون عند الحاجة لها. • وحدة برمجية معروفة Named Block: تسمى أحيانا Subprogram , وهي الوحدات البرمجية التي لها اسم محدد عند تعريفها ويندرج ضمنها: Function, Procedure, Trigger, Package. • يمكن للقطعة البرمجية (Modules ) أن تحتوي على وحدة (Block ) أوأكثر ويمكن للوحدات أن تكون بداخل بعضها البعض Nested Blocks
مقدمة في PL/SQL رسم يوضح الأنواع المختلفة للوحدات البرمجية:
مقدمة في PL/SQL • تركيب الوحدات (Block ) تتكون الوحدة من 3 أجزاء: • الجزء التعريفي (Declarative) : في هذا الجزء يتم تعريف المتغيرات والمؤشرات والاستثناءات , ويعتبر هذا الجزء اختياري أي يمكن كتابة ال(Block ) دون الحاجة لتعريف متغيرات. • الجزء التنفيذي (Executable) ويحتوي على جمل SQL مثل (استرجاع ,حذف ,إضافة ,تحديث) بالإضافة إلى جمل PL/SQL التي تقوم بالتعامل مع البيانات داخل الوحدة, مثل جمل الدوران والشرط ...إلخ وهذا الجزء إجباري لأنه يحتوي على الجمل الواجب تنفيذها. • الجزء الخاص بمعالجة الاستثناءات(Exception) في هذا الجزء يتم معالجة الأخطاء الممكن حدوثها خلال مرحلة التنفيذ ويعتبر جزء اختياري.
مقدمة في PL/SQL • DECLARE • BEGIN • SQL • PL/SQL • EXCEPTION • END; اختياري تعريف المتغيرات , الاستثناءات, المؤشرات اجباري بداية الجزء التنفيذي جمل SQL جمل PL/SQL اختياري الإجراء الذي يجب تنفيذه عند حدوث خطأ اجباري نهاية الجزء التنفيذي
المتغيرات في PL/SQL • المتغيرات عبارة عن مواقع في الذاكرة يمكن استخدامها لتخزين البيانات مؤقتا خلال عملية تنفيذ (Block ). • فوائد استخدام المتغيرات: • معالجة البيانات المخزنة: يمكن استخدامها لتحتوي على القيم المخزنة في قاعدة البيانات ومثلا اجراء عملية حسابية عليها. • إعادة الاستخدام: المتغير يقوم بحجز مكان في الذاكرة بالتالي نستطيع استخدام المتغير أكثر من مرة في عملية تخزين واسترجاع البيانات خلال تنفيذ البرنامج. • سهولة الصيانة.
المتغيرات في PL/SQL • تعريف المغيرات: عند استخدام المتغيرات لا بد من تعريفها في جمل منفصلة تنتهي بفاصلة منقوطة (;). • الشكل العام لتعريف المتغيرات: • identifier [CONSTANT] datatype [NOT NULL] [:= DEFAULT | expression ] ;
المتغيرات في PL/SQL • مثال : Declare v_name VARCHAR2(10) ; v_date DATE ; v_id NUMBER(2) NOT NULL:=10 ; c_comm CONSTANT NUMBER:=120; BEGIN …… END;
المتغيرات في PL/SQL • النقاط التي يجب مراعاتها عند تعريف المتغيرات: 1- اتباع قواعد التسمية المستخدمة في SQL • لا يمكن أن يكون هناك أكثر من متغير يحمل نفس الاسم إلا إذا كان في وحدة (Block ) أخرى. • عدم استخدام اسم الجدول أو عمود سيتم استخدامها في نفس الوحدة (Block ). • لا يزيد طول الاسم عن 30 حرف. • أن يحتوي على رموز يمكن استخدامها في SQL وهي : A-Z, a-z, 0-9, _, #,$ • يجب أن يبدأ بحرف. • غالبا نستخدم الأحرف الصغيرة لتعريف المتغيرات. 2- وضع قيم ابتدائية للمتغيرات المعرفة باستخدام CONSTANTوNOT NULLحتى لا يحصل خطأ في التعريف. 3- وضع القيم الابتدائية باستخدام := أو باستخدام الكلمة المحجوزة DEFUALT 4- تعريف متغير واحد فقط في كل جملة. 5- أن لا يكون اسم المتغير أحد الكلمات المحجوزة.
المتغيرات في PL/SQL - إسناد قيم للمتغيرات: • هناك طريقتان لإسناد القيم للمتغيرات: • باستخدام جملة الإسناد بحيث نقوم بكتابة اسم المتغير ثم وضع التعبير. Identifier := expression ; مثال:
المتغيرات في PL/SQL • الطريقة الأخرى إسناد القيم من خلال جملة الاسترجاع من قاعدة البيانات. مثال: SELECT ename INTO v_name FROM emp WHERE empno = 7788; • يجب الانتباه إلى أن عملية الاسترجاع تعيد قيمة واحدة فقط للمتغيرv_nameوإلا سيتم حدوث خطأ.
المتغيرات في PL/SQL • أنواع البيانات للمتغيرات Datatypes • Scalar Datatype • Composite Datatype • LOB Datatype • Bind Variables
أنواع البيانات للمتغيرات Datatypes Scalar Datatype) 1 ) المتغيرات التي تحتوي على قيمة واحدة وهذا النوع يحتوي على قيم مفردة.
المتغيرات في PL/SQL • مثال: v_job VARCHAR2(9); v_count BINARY_INTEGER := 0; v_total_sal NUMBER(9,2) := 0; v_orderdate DATE := SYSDATE + 7; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; v_valid BOOLEAN NOT NULL := TRUE;
المتغيرات في PL/SQL • خاصية %TYPE تستخدم هذه الخاصية لتعريف متغير اعتمادا على متغير آخر. • مثال: v_enameemp.ename %TYPE; - قمنا بتعريف المتغير v_ename بنفس النوع والحجم للعمود ename الموجود في جدول emp . • مثال: v_balance NUMBER(7,2); v_min_balancev_balance %TYPE := 10; - قمنا بتعريف متغيرv_balance من نوع رقمي. - قمنا بتعريف المتغير v_min_balanceبنفس النوع والحجم للمتغير v_balance وبقيمة ابتدائية 10 .
المتغيرات في PL/SQL • تعريف المتغيرات المنطقية BOOLEAN: - تأخذ قيم TRUE , FLASE, NULL . • يمكن ربطها بواسطة العمليات المنطقية AND,OR ,NOT . • يمكن استخدام التعبيرات الحسابية للحصول على نتائج منطقية (<,>, =<, =>) • مثال: v_sal1 NUMBER: =1000 ; v_sal2 NUMBER: =2500 ; v_valid BOOLEAN:= (v_sal1 > v_sal2);
المتغيرات في PL/SQL • أنواع البيانات للمتغيرات Datatypes 2. المتغيرات المركبة Composite Datatype: 1- السجلات RECORDS : تتكون من عدة حقول ولا يشترط أن تكون من نفس النوع أوالحجم. 2- الجداول TABLES : تتكون من عدة حقول ولا يشترط أن تكون من نفس النوع أوالحجم (وممكن أن يكون هناك أكثر من صف في الجدول).
المتغيرات في PL/SQL • أنواع البيانات للمتغيرات Datatypes 3. المتغيرات التي تحتوي على كائنات كبيرة الحجم LOB Datatype (Large Objectas): هي المتغيرات التي تحتوي على كائنات كبيرة الحجم مثل أفلام ,نصوص كبيرة...إلخ 4.متغيرات الربط Bind Variables: هي المتغيرات التي يتم تعريفها داخل البيئة التي يتم تنفيذ الوحدة داخلها مثل (SQL* Plus) بحيث نتستخدم المتغيرات داخل وحدة (Block) أو أكثر. • مثال: • SQL > VARIABLE Emp_Sal NUMBER تم تعريف متغير Emp_Sal من نوع NUMBER على مستوى المضيف (host) وعند استخدامها داخل ال(Block) فإنه يجب أن يسبق المتغير بنقطتين علويتين(:) : Emp_Sal:= 5000 ; - حتى نطبع المتغير Emp_Sal في بيئة (SQL* Plus)نستخدم الأمر PRINT SQL> PRINT Emp_ Name
الطباعة على الشاشة PL/SQL • جملة الإخراج (الطباعة) • مثال: SET SERVEROUTPUT ON يجب وضع هذه الجملة في البداية حتى يمكن تنفيذ أمر الطباعة ACCEPT p_annual_sal PROMPT ' Please enter the annual salary ' Declare v_sal NUMBER(9,2) :=&p_annual_sal ; BEGIN v_sal := V_sal /12; DBMS_OUTPUT.PUT_LINE('Monthly Salary is '||TO_CHAR(v_sal));جملة الطباعة END;
الخلاصة • ماهية PL/SQL • أقسام (Modules) • Anonymous Block • Named Block • أجزاء الوحدة (Block) • المتغيرات. الشكل العام لتعريف المتغيرات identifier [CONSTANT] datatype [NOT NULL] [:= DEFAULT | expression ] ; • أنواع المتغيرات (Datatypes). • Scalar Datatype • Composite Datatype • LOB Datatype • Bind Variables