Oracle إدراج PL/SQL وتحديثه وحذفه وتحديده [مثال]

في هذا البرنامج التعليمي، سوف نتعلم كيفية استخدام SQL في بل / SQL. SQL هو المكون الفعلي الذي يعتني بجلب البيانات وتحديثها في قاعدة البيانات بينما PL/SQL هو المكون الذي يعالج هذه البيانات. علاوة على ذلك، في هذه المقالة، سنناقش أيضًا كيفية دمج SQL داخل كتلة PL/SQL.

معاملات DML في PL/SQL

DML لتقف على لغة معالجة البياناتتُستخدم هذه العبارات بشكل أساسي لإجراء نشاط المعالجة. وهي تتعامل مع العمليات التالية.

  • ادراج البيانات
  • تحديث البيانات
  • حذف البيانات
  • اختيار البيانات

في PL/SQL، يمكننا القيام بمعالجة البيانات فقط باستخدام أوامر SQL.

ادراج البيانات

في PL/SQL، يمكننا إدراج البيانات في أي جدول باستخدام أمر SQL INSERT INTO. سيأخذ هذا الأمر اسم الجدول وعمود الجدول وقيم الأعمدة كمدخلات ويدرج القيمة في الجدول الأساسي.

يمكن لأمر INSERT أيضًا أخذ القيم مباشرة من جدول آخر باستخدام عبارة "SELECT" بدلاً من إعطاء القيم لكل عمود. من خلال عبارة "SELECT"، يمكننا إدراج العديد من الصفوف التي يحتوي عليها الجدول الأساسي.

بناء الجملة:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • يُظهر بناء الجملة أعلاه الأمر INSERT INTO. اسم الجدول وقيمه عبارة عن حقول إلزامية، في حين أن أسماء الأعمدة ليست إلزامية إذا كانت عبارات الإدراج تحتوي على قيم لجميع أعمدة الجدول.
  • تعتبر الكلمة الأساسية "VALUES" إلزامية إذا تم تقديم القيم بشكل منفصل كما هو موضح أعلاه.

بناء الجملة:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • يُظهر بناء الجملة أعلاه الأمر INSERT INTO الذي يأخذ القيم مباشرةً من الملف باستخدام الأمر SELECT.
  • لا ينبغي أن تكون الكلمة الأساسية "VALUES" موجودة في هذه الحالة حيث لا يتم تقديم القيم بشكل منفصل.

تحديث البيانات

تحديث البيانات يعني ببساطة تحديث قيمة أي عمود في الجدول. يمكن القيام بذلك باستخدام عبارة "UPDATE". يأخذ هذا البيان اسم الجدول واسم العمود والقيمة كمدخلات ويقوم بتحديث البيانات.

بناء الجملة:

BEGIN	
  UPDATE <table_name>
  SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> 
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • يوضح بناء الجملة أعلاه UPDATE. تقوم الكلمة الأساسية "SET" بتوجيه محرك PL/SQL إلى تحديث قيمة العمود بالقيمة المحددة.
  • جملة "WHERE" اختيارية. إذا لم يتم ذكر هذا البند، فسيتم تحديث قيمة العمود المذكور في الجدول بأكمله.

حذف البيانات

يعني حذف البيانات حذف سجل واحد كامل من جدول قاعدة البيانات. يتم استخدام الأمر "DELETE" لهذا الغرض.

بناء الجملة:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • يُظهر بناء الجملة أعلاه أمر الحذف. الكلمة الأساسية "FROM" اختيارية ومع أو بدون جملة "FROM"، يتصرف الأمر بنفس الطريقة.
  • جملة "WHERE" اختيارية. إذا لم يتم إعطاء هذه الجملة، فسيتم حذف الجدول بأكمله.

اختيار البيانات

إسقاط/جلب البيانات يعني استرداد البيانات المطلوبة من جدول قاعدة البيانات. يمكن تحقيق ذلك باستخدام الأمر "SELECT" مع جملة "INTO". سيقوم الأمر "SELECT" بجلب القيم من قاعدة البيانات، وستقوم عبارة "INTO" بتعيين هذه القيم للمتغير المحلي لقاعدة البيانات. كتلة بل/SQL.

فيما يلي النقاط التي يجب مراعاتها في عبارة "SELECT".

  • يجب أن تقوم عبارة "SELECT" بإرجاع سجل واحد فقط أثناء استخدام عبارة "INTO" حيث يمكن لمتغير واحد أن يحتوي على قيمة واحدة فقط. إذا قامت العبارة 'SELECT' بإرجاع أكثر من قيمة واحدة، فسيتم ظهور الاستثناء 'TOO_MANY_ROWS'.
  • ستقوم عبارة "SELECT" بتعيين القيمة للمتغير في جملة "INTO"، لذلك تحتاج إلى الحصول على سجل واحد على الأقل من الجدول لملء القيمة. إذا لم يحصل على أي سجل، فسيتم طرح الاستثناء "NO_DATA_FOUND".
  • يجب أن يتطابق عدد الأعمدة ونوع البيانات الخاصة بها في عبارة "SELECT" مع عدد المتغيرات وأنواع البيانات الخاصة بها في عبارة "INTO".
  • يتم جلب القيم وتعبئتها بنفس الترتيب المذكور في البيان.
  • تعتبر عبارة "WHERE" اختيارية تسمح بفرض المزيد من القيود على السجلات التي سيتم جلبها.
  • يمكن استخدام عبارة "SELECT" في شرط "WHERE" لعبارات DML الأخرى لتحديد قيم الشروط.
  • يجب ألا تحتوي عبارة "SELECT" عند استخدام عبارات "INSERT" و"UPDATE" و"DELETE" على عبارة "INTO" لأنها لن تقوم بملء أي متغير في هذه الحالات.

بناء الجملة:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • يُظهر بناء الجملة أعلاه أمر SELECT-INTO. الكلمة الأساسية "من" إلزامية تحدد اسم الجدول الذي يجب جلب البيانات منه.
  • جملة "WHERE" اختيارية. إذا لم يتم إعطاء هذه الجملة، فسيتم جلب البيانات من الجدول بأكمله.

مثال 1:في هذا المثال، سنرى كيفية إجراء عمليات DML في PL / SQL. سنقوم بإدراج السجلات الأربعة أدناه في جدول emp.

EMP_NAME EMP_NO المرتبات مدير
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
ZZZ 1003 7500 BBB

ثم سنقوم بتحديث راتب "XXX" إلى 15000، وسنقوم بحذف سجل الموظف "ZZZ". وأخيرًا، سنقوم بإسقاط تفاصيل الموظف "XXX".

اختيار البيانات في PL/SQL

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER; 
l_manager VARCHAR2(250);
BEGIN	
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(‘BBB’,1000,25000,’AAA’);
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,’BBB);
INSERT INTO emp(emp_name,emp_no,salary,managed 
VALUES(‘YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(‘ZZZ',1003,7500,'BBB'):‭
COMMIT;
Dbms_output.put_line(‘Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line(‘Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT:
Dbms_output.put_line('Values Deleted );
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';

Dbms output.put line(‘Employee Detail’);
Dbms_output.put_line(‘Employee Name:‘||l_emp_name);
Dbms_output.put_line(‘Employee Number:‘||l_emp_no);
Dbms_output.put_line(‘Employee Salary:‘||l_salary);
Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):
END;
/

الإخراج:

Values Inserted
Values Updated
Values Deleted
Employee Detail 
Employee Name:XXX 
Employee Number:1001 
Employee Salary:15000 
Employee Manager Name:BBB

شرح الكود:

  • سطر الكود 2-5:الإعلان عن المتغير.
  • سطر الكود 7-14: إدراج السجلات في جدول emp.
  • سطر الكود 15: إجراء معاملات الإدراج.
  • سطر الكود 17-19: تعديل راتب الموظف "XXX" إلى 15000
  • سطر الكود 20: تنفيذ معاملة التحديث.
  • سطر الكود 22: حذف سجل 'ZZZ'
  • سطر الكود 23: تنفيذ معاملة الحذف.
  • سطر الكود 25-27: اختيار سجل "XXX" وملؤه في المتغير l_emp_name، l_emp_no، l_salary، l_manager.
  • سطر الكود 28-32: عرض قيمة السجلات التي تم جلبها.

تلخيص هذه التدوينة بـ: