كتابة الجمل التنفيذية في PL/SQL
Download
Report
Transcript كتابة الجمل التنفيذية في PL/SQL
كتابة الجمل التنفيذية في
PL/SQL
الجمل التنفيذية في PL/SQL
تركيب الجمل ( )Syntaxفي :PL/SQL
تتكون الجمل من مجموعة من المكونات تفصل بينها فراغات ,محددات ,مالحظات .وتخضع هذه
المكونات والفواصل إلى قواعد يجب مراعاتها.
مكونات الجمل:
.1متغيرات.
.2القيم الثابتة . Literal Values
قيم ثابتة رمزية وقيم التاريخ Dateو Characterتكون القيم داخل ’‘ مثل:
;‘v_ddate =:‘15-JAN-2005
;’v_name:=’ali
قيم ثابتة رقمية Numbersو يمكن أن تكون صحيحة أو كسرية مثل:
;v_id :=201
.3العمليات .Operations
الضرب والقسمة (*)/ , األس والنفي (**) NOT, العمليات المنطقية ()AND ,OR الجمع والطرح ()- ,+ -عمليات المقارنة ()=,>,<,<=, <=, IS NULL, LIKE, BETWEEN, IN
الجمل التنفيذية في PL/SQL
التعليقات : Comments
عند كتابة التعليقات:
تعليقات السطر الواحد تكون بوضع ( )--في بداية جملة التعليق وتعني أن ما بعد هذه الجملة نصتوضيحي.
تعليقات السطور المتعددة تكون بوضع (* )/في بداية التعليق ووضع ( )*/في نهاية التعليق.o
مثال:
…….
v_name varchar2(20) ; -- this variable used to hold the employee name
Begin
/* this code is used to read
The employee salary and calculate the annual salary
And print the annual salary
*/
…….
; End
الوحدات المتداخلة ()Nested Blocks
الوحدات المتداخلة ()Nested Blocks
يمكن كتابة ( )Blockداخل الجزء التنفيذي ألي ( )Blockآخر وسيعامل على أنه جملة
تنفيذية ,ويمكن أيضا كتابة ( )Blockداخل جزء االستثناءات.
مجال المتغير
يمثل المنطقة
التي يمكن
التعامل مع
المتغير داخلها
مجال x
مجال y
...
;x BINARY_INTEGER
BEGIN
...
DECLARE
;y NUMBER
BEGIN
...
;END
...
;END
الوحدات المتداخلة ()Nested Blocks
في حالة تعريف
متغيرين بنفس
االسم في الوحدات
المتداخلة فإن
الوحدة ()Block
تتعامل مع المتغير
األقرب لها
...
;x BINARY_INTEGER
BEGIN
...
DECLARE
;x NUMBER
BEGIN
استخدام المتغير داخل هذه
...
الوحدة سيكون ل
;END
...
;END
)Nested Blocks( الوحدات المتداخلة
:مثال
DECLARE
v_sal
NUMBER(7,2) := 60000;
v_comm NUMBER(7,2) := v_sal * .20;
v_message VARCHAR2(255) := ' eligible for commission';
BEGIN
DECLARE
v_sal
NUMBER(7,2) := 50000;
v_comm NUMBER(7,2) := 0;
v_total_comp NUMBER(7,2) := v_sal + v_comm;
output
BEGIN
v_message := 'CLERK not' || v_message;
END;
SALESMAN CLERK not eligible
v_message := 'SALESMAN'||v_message;
for commission
DBMS_OUTPUT.PUT_LINE (v_message );
END;
دليل البرمجة في PL/SQL
()Programming Guidelines
.1
.2
كتابة التوضيحات والتعليقات وذلك لتوضيح داللة المتغيرات وطريقة
عمل البرنامج.
استخدام حالة األحرف الصغيرة والكبيرة بناء على ما يلي:
الفئة
حالة األحرف
مثال
SQLجمل
كبيرة
SELECT, INSERT
الكلمات المحجوزة
كبيرة
DECLARE ,BEGIN, END
أنواع المتغيرات
كبيرة
)VARCHAR2(5), NUMBER(3
معامالت المتغيرات
صغيرة
g_id, v_sal
أسماء الجداول واألعمدة
صغيرة
emp, dept, ename
PL/SQL دليل البرمجة في
)Programming Guidelines(
:الجدول التالي يبين طريقة تسمية المتغيرات بناء على نوع المتغيرات
مثال
طريقة التسمية
االسم
v_empno, v_sal
v_name
variables المتغيرات
c_sal , c_tax
c_name
constants الثوابت
emp_cursor
Name_cursor
cursors المؤشرات
e_too_many
e_name
exception االستثناءات
p_empno
p_name
متغيرات االستبدال
substitute variables
g_sal
g_name
global المتغيرات العامة
PL/SQL دليل البرمجة في
)Programming Guidelines(
. استخدام اإلزاحات حتى يكون البرنامج واضح وسهل الفهم.3
:نالحظ الفرق أدناه
BEGIN
IF x=0 THEN
y:=1;
ELSE
y:=2;
END IF;
END;
BEGIN
IF x=0 THEN y:=1; ELSE y:=2; END IF;
END;
التفاعل مع الخادم
Oracle
)Select Statement( جمل االسترجاع
:)Select Statement( كتابة جملة االسترجاع
.PL/SQL وجملSQL إن عملية استرجاع البيانات ومعالجتها تتطلب جمل
SELECT column name
INTO variable_name
FROM table
WHERE condition ); (الشرط
جمل االسترجاع ()Select Statement
مثال:
عند كتابة جمل االسترجاع يجب مراعاة ما يلي:
أن تنتهي جملة االسترجاع بفاصلة منقوطة (;)
يجب أن تحتوي جملة االسترجاع على . INTO
عدد المتغيرات يجب أن يساوي عدد القيم الراجعة من جملة االسترجاع وكذلك نوع البيانات يجب أن يكون نفس نوع
البيانات الراجعة.
للتأكد من توافق البيانات مع بعضها نعرف المتغيرات باستخدام . %TYPE
;v_deptno dept.deptno%TPYPE
;v_loc dept.loc%TPYPE
ال يشترط وجود WHEREولكن يجب التأكد من العائد من جملة االسترجاع.
DECLARE
;)v_deptno NUMBER(2
v_loc
;)VARCHAR2(15
BEGIN
SELECT deptno, loc
INTO v_deptno, v_loc
FROM dept
;'WHERE dname = 'SALES
;END
-
-
معالجة البيانات باستخدام جمل DML
.1
تتم معالجة البيانات المخزنة بقاعدة البيانات باستخدام جمل DMLوهي:
جمل اإلضافة ” : INSERTإضافة صف جديد في الجدول“
BEGIN
)INSERT INTO emp (empno, ename, job, deptno
;)VALUES (empno_sequence.NEXTVAL, 'HARDING', 'CLERK', 10
;END
.2جمل التعديل ” : UPDATEتعديل القيم الموجودة في الجدول“
عند عمل جمل التعديل يجب استخدام WHEREحتى يتم بيان المعلومات الواجب تعديلها.
DECLARE
;v_sal_increase emp.sal %TYPE := 2000
BEGIN
UPDATE emp
SET sal = sal + v_sal_increase
; ‘WHERE job = 'ANALYST
;END
DML معالجة البيانات باستخدام جمل
“ ”حذف صف من الجدول: DELETE جمل الحذف
DECLARE
v_deptno emp.deptno %TYPE := 10 ;
BEGIN
DELETE FROM emp
WHERE deptno = v_deptno ;
END ;
.3
استخدام الدوال
الدوال التي يمكن استخدامها داخل وحدة (:)Block
دوال الصف الواحد في SQL
الدوال الرقمية Number Functions الدوال الرمزية Character Functions -دوال التاريخ Date Functions
أمثلة
Number Functions الدوال الرقمية
v_sal := ROUND(1.23456) ; 1
تقرب ما بعد الفاصلة
ROUND•
v_sal := TRUNC(1.23456) ; 1
تتجاهل ما بعد الفاصلة
TRUNC•
v_ num := SQRT(9); 3
تعطي الجذر التربيعي
SQRT•
أمثلة
Character Functions الدوال الرمزية
SELECT INITCAP (enam) INTO v_name
FROM emp
WHERE empno =7788;
INITCAP•
تجعل الحرف األول من الكلمة حرف كبير
SELECT CONCAT(first_name, last_name)
INTO v_name FROM employee
WHERE empno =7788;
CONCAT•
..تربط بين كلمتين أو عمودين
SELECT LOWER (job), INITCAP (ename)
INTO v_ejop , v_ename
FROM employees
WHERE UPPER (job) = 'SALESREP'
LOWER•
تحول إلى أحرف صغيرة
UPPER•
تحول إلى أحرف كبيرة
أمثلة
SELECT ADD_MONTHS('01-JAN2005', 13) FROM dual;
SELECT MONTHS_BETWEEN('25-MAY2005',‘15-JAN-2005') FROM dual;
4.32258065
Date Functions دوال التاريخ
ADD_MONTHS•
تضيف عدد معين من األشهرعلى التاريخ المعطى
MONTHS_BETWEEN•
.تعطي عدد األشهر مابين تاريخين
استخدام الدوال
:دوال التحويل بين أنواع البيانات المختلفة
TO_CHAR ◄ CHARACTER التحويل إلى قيم رمزية
.1
to_char( value, [ format_mask ], [ nls_language ] )
: مثال تحويل تاريخ إلى قيم رمزية
to_char(sysdate, 'yyyy/mm/dd');
'2003/07/09‘
: مثال تحويل أرقام إلى قيم رمزية
to_char(1210.73)
'1210.73 ‘
to_char(1210.73, '9999.9')
'1210.7‘
to_char(1210.73, '$9,999.00')
'$1,210.73'
TO_NUMBER ◄ NUMBER التحويل إلى قيم رقمية
.1
to_number( string1, [ format_mask ], [ nls_language ] )
:مثال
to_number('1210.73')
1210.73
TO_DATE ◄ DATE التحويل إلى قيم تاريخ
.1
to_date( string1, [ format_mask ], [ nls_language ] )
:مثال
to_date('2003/07/09', 'yyyy/mm/dd')
July 9, 2003.
استخدام المؤشر (SQL Cursor) SQL
.1
.2
هناك نوعان من المؤشرات :
مؤشرات يقوم المستخدم بتعريفها (.)EXPLICIT CURSORS
مؤشرات . )IMPLICIT CURSORS( SQL
مؤشرات : )IMPLICIT CURSORS( SQL
المؤشر هو عبارة عن منطقة عمل خاصة تستعمل لتنفيذ أي جملة يقوم المستخدم بتنفيذها مثل
جمل االسترجاع أوالحذف أوالتعديل.ويتم التحكم بهذا المؤشر من قبل النظام بعكس المؤشرات
التي يقوم المستخدم بتعريفها.
.1
.2
.3
خصائص المؤشر ثالثة:
SQL%ROWCOUNTتعيد عدد الصفوف التي تأثرت بآخر جملة SQL
SQL%FOUNDتعيد ( )TRUEإذا تأثر صف أو أكثر بآخر جملة SQLعكسها
SQL%NOTFOUNDتعيد ( )TRUEإذا لم تؤثر آخر جملة SQLبأي صف.
SQL%ISOPENتعيد ( )TRUEإذا كان المؤشر مفتوح .بالنسبة ل SQL
CURSORSدائما تكون القيمة الراجعة ( )FALSEألن المؤشر يفتح ويغلق ضمنيا من
قبل النظام.
(SQL Cursor) SQL مثال على استخدام المؤشر
SQL> VARIABLE rows_deleted VARCHAR2(30)
DECLARE
v_ordid NUMBER := 605;
BEGIN
DELETE FROM item
WHERE ordid = v_ordid;
:rows_deleted := (SQL%ROWCOUNT ||' rows deleted.');
END;
SQL >PRINT rows_deleted
الخالصة
تركيب الجمل ( )Syntaxفي PL/SQL
بعض الدوال التي يمكن استخدامها في PL/SQL
.1دوال الصف الواحد.
.2دوال التحويل.
المتغيرات في الوحدات المتداخلة.
كتابة جمل PL/SQLوجمل SQLللتفاعل مع الخادم أوركال.
جمل االسترجاع ومعالجة البيانات باستخدام .DML -استخدام مؤشرات SQL