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

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

صورة
- - - - -

مساعده في زيادة الراتب


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

#1 هيرودس

هيرودس

    عضو

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

تاريخ المشاركة 08 January 2011 - 02:55 PM

Declare
	V_Deptno number := &Dno;
	V_Comm V_Deptno%Type;
	Valid_Dept Boolean := True;
Begin
	If V_Deptno = 10 Then V_Comm := 2000;
	ElsIf V_Deptno = 20 Then V_Comm := 2500;
	ElsIf V_Deptno = 30 Then V_Comm := 3000;
	ElsIf V_Deptno = 40 Then V_Comm := 3500;
	Else Valid_Dept := False;
	End If;

	IF Valid_Dept Then
		Update Emp
		Set comm = V_Comm
		Where Deptno = V_Deptno;
	Else
		Dbms_Output.Put_Line('Invalid Department Number');
	End If;
End;
/
----------------------------
ارجو التعديل على الكود السابق لزيادة 10% للموظفين اللي في الدائره 10 وزيادة 20% للموظفين اللي في الدائره20 الى اخره
يعطيكم العافيه ضروري

تم التعديل بواسطة هيرودس, 08 January 2011 - 03:34 PM.


#2 AFM.DBA

AFM.DBA

    مشترك

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

تاريخ المشاركة 08 January 2011 - 03:50 PM

Declare
        V_Deptno number := &Dno;
        V_Comm V_Deptno%Type;
        Valid_Dept  NUMBER(1);

CURSOR DEPT_VALID IS
SELECT COUNT(1)
FROM DEPT_TABLE
WHERE DEPT_NO= V_Deptno;
Begin
OPEN DEPT_VALID;
FETCH DEPT_VALID INTO Valid_Dept; 
CLOSE Valid_Dept;

SELECT DECODE (V_Deptno,10,2000,20,2500,30,3000,40,3500) INTO V_Comm
FROM DUAL; 

        IF NVL(Valid_Dept,0)>0 Then
                Update Emp
                Set comm = V_Comm
                Where Deptno = V_Deptno;
        ElsIF NVL(Valid_Dept,0)=0 Then
                Dbms_Output.Put_Line('Invalid Department Number');
        End If;
End;
/

والله ولي التوفيق ,,

#3 AFM.DBA

AFM.DBA

    مشترك

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

تاريخ المشاركة 08 January 2011 - 03:58 PM

هذا مافهمته منك

في حالة انك تريد زيادة راتب كل موظف بنسبة من راتبه اليك الطريقة

Declare
        V_Deptno number := &Dno;
        V_Comm  NUMBER(15,2);
        Valid_Dept  NUMBER(1);

CURSOR DEPT_VALID IS
SELECT COUNT(1)
FROM DEPT_TABLE
WHERE DEPT_NO= V_Deptno;
Begin
OPEN DEPT_VALID;
FETCH DEPT_VALID INTO Valid_Dept; 
CLOSE Valid_Dept;

SELECT DECODE (V_Deptno,10,0.1,20,0.2,30,0.3,40,0.4) INTO V_Comm
FROM DUAL; 

        IF NVL(Valid_Dept,0)>0 Then
                Update Emp
                Set SAL = SAL*(V_COMM+1)
,COMM=V_COMM
                Where Deptno = V_Deptno;
        ElsIF NVL(Valid_Dept,0)=0 Then
                MESSAGE('Invalid Department Number');
 MESSAGE('Invalid Department Number');
        End If;
End;
/





#4 هيرودس

هيرودس

    عضو

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

تاريخ المشاركة 08 January 2011 - 04:10 PM

اخوي زيادة كل دائره
10--اليها 10%
20--اليها 20%
30--البها30%
40 اليها 40%
رحم الله والديك
يعني اللي في الدائره 10 اليهم زيادة في الراتب 10% كلهم
وااللي في الدائره 20 الموضفين اللي فيها 20% زيادة في رواتبهم

تم التعديل بواسطة هيرودس, 08 January 2011 - 04:16 PM.


#5 هيرودس

هيرودس

    عضو

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

تاريخ المشاركة 08 January 2011 - 04:12 PM

قصدي salary

#6 AFM.DBA

AFM.DBA

    مشترك

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

تاريخ المشاركة 08 January 2011 - 04:16 PM

قصدي salary



الكود الثاني ينفذ ماطلبته
انه سوف يزيد راتب كل واد في الادارة رقم عشرة مثلا ب 10% (0.1)من راتبه

تم التعديل بواسطة AFM.DBA, 08 January 2011 - 04:16 PM.


#7 هيرودس

هيرودس

    عضو

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

تاريخ المشاركة 08 January 2011 - 04:18 PM

جعلك الله دخر وفخرا لوالديك

#8 AFM.DBA

AFM.DBA

    مشترك

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

تاريخ المشاركة 08 January 2011 - 04:20 PM

جعلك الله دخر وفخرا لوالديك

جزاك الله كل الخير