الانتقال إلى المحتوى

Exception On Plsql


wed579

Recommended Posts

اكتب بلك pl/sql لاسترجاع اسم الموظف صاحب راتب معين.
1. إذا الراتب المدخل تسبب في استرجاع اكثر من سطر، عالج الاستثناء الناتج بالمعالج المناسب وادرج في جدول message الرسالة "هناك اكثر من موظف لهم راتب"
<salary>
2. إذا الراتب المدخل لم يسترجع أي سطر عالج الاستثناء الناتج بالمعالج المناسب و إدرج في جدول message الرسالة "لايوجد موظفون لهم رواتب"<salary>
3. إذا الراتب المدخل يسترجع سطرا واحد فقط،ادرج في جدول message اسم الموظف وراتبه
4.عالج أي استثناء آخر بالمعالج المناسب وادرج في جدول message الرسالة"حدث هناك خطأ ما"
النتيجة او المخرجات كالتالي
محمد - 2000
هناك اكثر من موظف له راتب 500
لايوجد موظفون لهم رواتب 3500
السؤال الثاني
اكتب بلك pl/sql لتعديل موقع دائرة معينة في جدول dept بالطلب من المستخدم إدخال رقم الدائة وموقع الدائرة الجديد باستخدام المتغيرات التعويضية
1. اكتب معالج استثناء في حالة أن رقم الدائرة المدخل غير موجود يقوم بتمرير رسالة للمستخدم مفادها أن هذه الدائرة غير موجودة
2. نفذ بلك pl/sql وادخل رقم دائرة غير موجود فعلا.
النتيجة او المخرجات كالتالي
please enter department number : 50
please enter department location :huston
message: الدائرة 50 غير موجودة
السؤال الثالث
اكتب بلك pl/sql يقوم بطباعة عدد الموظفين الذين يكسبون نفس قيمة الراتب المدخل زائد أو ناقص 100.
1.اذا لم يكن هناك اي موظف بالمدى المحدد اطبع رسالة لمستخدم تخبره بهذا الحاله.
2. اذا كان هناك موظف أو أكثر بالمدى المحدد اطبع رسالة توضح عدد الموظفين بهذا الراتب.
3. اذا حدث اي استثناء آخر عالجه بالمعالج المناسب واطبع رسالة توضح أن هناك خطأ ما..

رابط هذا التعليق
شارك

اكتب بلك pl/sql لاسترجاع اسم الموظف صاحب راتب معين.
1. إذا الراتب المدخل تسبب في استرجاع اكثر من سطر، عالج الاستثناء الناتج بالمعالج المناسب وادرج في جدول message الرسالة "هناك اكثر من موظف لهم راتب"
<salary>

set verify off
set serveroutput on declare 
 ename   employees.last_name%type;
 emp_sal employees.salary%type:=&sal;
begin select last_name into ename from employees 
 where salary=emp_sal;
 insert into message values(ename || '-' || to_char(emp_sal));
exception 
 when NO_DATA_FOUND then 
 insert into message values('لايوجد موظفون لهم رواتب' || to_char(emp_sal));
 when TOO_MANY_ROWS then 
 insert into message values('هناك اكثر من موظف لهم راتب' ||to_char(emp_sal));
 when OTHERS then 
 insert into message values('حدث هناك خطأ ما' ||to_char(emp_sal));
end;

رابط هذا التعليق
شارك

السؤال الثاني
اكتب بلك pl/sql لتعديل موقع دائرة معينة في جدول dept بالطلب من المستخدم إدخال رقم الدائة وموقع الدائرة الجديد باستخدام المتغيرات التعويضية
1. اكتب معالج استثناء في حالة أن رقم الدائرة المدخل غير موجود يقوم بتمرير رسالة للمستخدم مفادها أن هذه الدائرة غير موجودة
2. نفذ بلك pl/sql وادخل رقم دائرة غير موجود فعلا.
النتيجة او المخرجات كالتالي
please enter department number : 50
please enter department location :huston
message: الدائرة 50 غير موجودة

set verify off 
accept dept_no prompt 'please enter department number :'
accept dept_loc prompt 'please enter department location :'
set serveroutput on declare
 id_error exception;
 dept_no  dept.deptno%type:=&dept_no;
 dept_loc dept.loc%type:='&dept_loc';
begin update dept
 set loc=dept_loc
 where deptno=dept_no;
 if sql%notfound then 
 raise id_error;
 end if;
exception 
 when id_error then 
 dbms_output.put_line('الدائرة' || dept_no || ' غير موجودة' );
end;

تم تعديل بواسطة @nana@
رابط هذا التعليق
شارك

السؤال الثالث
اكتب بلك pl/sql يقوم بطباعة عدد الموظفين الذين يكسبون نفس قيمة الراتب المدخل زائد أو ناقص 100.
1.اذا لم يكن هناك اي موظف بالمدى المحدد اطبع رسالة لمستخدم تخبره بهذا الحاله.
2. اذا كان هناك موظف أو أكثر بالمدى المحدد اطبع رسالة توضح عدد الموظفين بهذا الراتب.
3. اذا حدث اي استثناء آخر عالجه بالمعالج المناسب واطبع رسالة توضح أن هناك خطأ ما..

set verify off
set serveroutput on declare 
 sal  employees.salary%type:=&sal;
 count_emp number(2);
 err  exception ;
begin select count(employee_id) into count_emp from employees 
 where (salary=sal+100) or (salary=sal-100);
 if count_emp=0 then 
  raise err;
  else
   dbms_output.put_line('عدد الموظفين' || count_emp);
 end if;
exception 
 when err then 
 dbms_output.put_line('لا يوجد موظفين');
 when others then 
 dbms_output.put_line('يوجد خطأ');
end

;

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية