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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

كتب cursor يعمل على زيادة الراتب بنسبة محددة لادارة محددة


2 رد (ردود) على هذا الموضوع

#1 hussien plaza

hussien plaza

    عضو

  • الأعضــاء
  • 3 مشاركة

تاريخ المشاركة 03 April 2010 - 03:18 PM

ارجو مساعدتي في حل السؤال .
السؤال :
اكتب cursor اسمه update_sal يعمل على زيادة
موظفي الدائرة (القسم) 10 بنسبة 10%
وموظفي الدائرة (القسم) 20 بنسبة 20%
وموظفي باقي الدوائر بنسبة 5% .
ارجو المساعدة...
ولكم جزيل الشكر ...
مشكوورين........


#2 abdou1984

abdou1984

    عضو نشط

  • الأعضــاء
  • 270 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 April 2010 - 04:12 PM

السلام عليكم ورحمة الله وبركاته
------------------------------------
BEGIN FOR REC IN ( SELECT * FROM EMP )
LOOP
UPDATE EMP
SET SAL=SAL + ( SELECT DECODE ( REC.DEPT_NO , 10 ,REC.SAL * 10/100,20,REC.SAL * 20/100 , REC.SAL*5/100) FROM DUAL )
WHERE EMP_NO=REC.EMP_NO;
END LOOP;
COMMIT;
END;


#3 mostfa_future

mostfa_future

    عضو مميز

  • الأعضــاء
  • 570 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 April 2010 - 08:22 PM

SET SERVEROUTPUT ON DECLARE
CURSOR deb_cursor iS
SELECT SAL ,DEPTNO , EMPNO
from emp ;
v_sal number(10,3) ;
x_DEPTNO number(10);
x_EMPNO number(10);
BEGIN OPEN deb_cursor;
LOOP
FETCH deb_cursor INTO x_sal,x_DEPTNO,x_EMPNO ;
if x_DEPTNO =10 then
update emp set sal=x_sal*.10 where EMPNO =x_EMPNO ;
end if;
if x_DEPTNO =20 then
update emp set sal=x_sal*.20 where EMPNO =x_EMPNO ;
end if;
if x_DEPTNO >20 then
update emp set sal=x_sal*.5 where EMPNO =x_EMPNO ;
end if;
EXIT WHEN deb_cursor%NOTFOUND;
end loop ;
CLOSE deb_cursor;
end;

تم التعديل بواسطة mostfa_future, 03 April 2010 - 08:22 PM.

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة