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

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

صورة
- - - - -

ارجو الرد: اضافة عموله لكل موظف حسب راتبه باستخدام CURSOR والمتغيرات


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

#1 رشدي راشد

رشدي راشد

    عضو

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

تاريخ المشاركة 29 March 2010 - 06:48 PM

مرحبا باخواني الاعزاء
ارجو حل السؤال التالي :
اضافة عموله لكل موظف حسب راتبه باستخدام CURSOR والمتغيرات
عن طريق ال UPDATE , عن طريق جدول EMP...........
مثلا
اي
ENTER_MIN(SAL)&
ENTER_MAX (SAL)&

ادخال الراتب يدوي

مثال
100
300
العموله هيه 5%
عن طريق ال UPDATE
اي من راتب 100 الى راتب 300 العموله هيه 5%
مابين 200 و 400 اريد لهم عموله 9%

وهكذذذذذا في كل مره

تم التعديل بواسطة رشدي راشد, 29 March 2010 - 06:51 PM.


#2 abdou1984

abdou1984

    عضو نشط

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

تاريخ المشاركة 29 March 2010 - 07:37 PM

السلام عليكم ورحمة الله وبركاته
---------------------------------------
شوف كده ان شاء الله يكون الحل ده صحيح
CREATE OR REPLACE PROCEDURE RAISE_SALARY(MIN_SAL NUMBER,MAX_SAL NUMBER , BOUNSE NUMBER )
AS BEGIN FOR REC IN ( SELECT EMP_NO , SAL FROM EMP WHERE SAL BETWEEN MIN_SAL AND MAX_SAL )
LOOP
UPDATE EMP
SET SAL=REC.SAL + ( BOUNSE / REC.SAL ) * 100
WHERE EMP_NO=REC.EMP_NO;
END LOOP;
COMMIT;
END;


#3 رشدي راشد

رشدي راشد

    عضو

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

تاريخ المشاركة 29 March 2010 - 08:01 PM

شكرا على الحل
بس انا ما بدي اياه باستخدام PROCEDURE ولا loop
لاني لسا مبتدأ في الاوركل
ارجو حله باستخدام CURSOR و عن طريق ال UPDATE
ارجو انك فهمت قصدي
وشكرا لك...............


#4 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 29 March 2010 - 08:32 PM

SET SERVEROUTPUT ON DECLARE
CURSOR deb_cursor iS
SELECT SAL , EMPNO
from emp WHERE sal BETWEEN &min_sal and &max_sal ;
v_sal number(10,3) :=&SS ;
x_EMPNO number(10);
f_sal number(10,3);
x_sal number(10,3);
BEGIN v_sal := v_sal / 100;
OPEN deb_cursor;
LOOP
FETCH deb_cursor INTO x_sal, x_EMPNO ;
f_sal := x_sal;
x_sal := v_sal * x_sal ;
f_sal := x_sal + f_sal;
update emp set sal = f_sal
where EMPNO = x_EMPNO;
EXIT WHEN deb_cursor%NOTFOUND;
end loop ;
CLOSE deb_cursor;
end;

علما ان ss هى نسبه الزياده انا عملو بابسط طريقه لو فى حاجه مش فهامه انا تحت امرك

تم التعديل بواسطة mostfa_future, 29 March 2010 - 08:35 PM.

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


صورةصورة


#5 abdou1984

abdou1984

    عضو نشط

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

تاريخ المشاركة 29 March 2010 - 09:31 PM

BEGIN FOR REC IN ( SELECT EMP_NO , SAL FROM EMP WHERE SAL BETWEEN :MIN_SAL AND :MAX_SAL  )
LOOP
UPDATE EMP
SET SAL=REC.SAL + ( :BOUNSE / REC.SAL ) * 100
WHERE EMP_NO=REC.EMP_NO;

END LOOP;
COMMIT;
END ;