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

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

صورة
- - - - -

تعبني هذا الكود في Pl/sql


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

#1 chairman

chairman

    عضو نشط

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

تاريخ المشاركة 22 May 2010 - 02:09 PM

اخواني لدي الجدول التالي
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NUL
                   ENAME VARCHAR2(10),
                 JOB VARCHAR2(9),
               MGR NUMBER(4),
                   HIREDATE DATE,
                    SAL NUMBER(7, 2),
                    COMM NUMBER(7, 2),
                    DEPTNO NUMBER(2))


واخلت فيه البيانات التالية

SQL> INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK',    7902, TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20);
SQL> INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30);
SQL> INSERT INTO EMP VALUES (7521, 'WARD',  'SALESMAN', 7698, TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30);
SQL> INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER',  7839, TO_DATE('2-APR-1981',  'DD-MON-YYYY'), 2975, NULL, 20);
SQL> INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
SQL> INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30);
SQL> INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);
SQL> INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
SQL> INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
SQL> INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30);
SQL> INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
SQL> INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30);
SQL> INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20);
SQL> INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10
);



وبدي لعمل check على حقل HIREDATE واذا كان التاريخ يقع بين 1/1/1981-13/1/1981 يقوم بتعديل راتب الموظف الى 1000 وعملت الكود التالي بس ما عم يتنفذ معي

declare
mar date;

cursor mo_cursor is
select to_char(hiredate,'dd/mm/yyyy') from emp;
begin
open mo_cursor;
loop
fetch mo_cursor into mar;
exit when mo_cursor%notfound;
if hiredate between to_char('1981/01/01','dd/mm/yyyy')
AND to_char('1981/12/31','dd/mm/yyyy'');
 then
update  emp set sal = 100 where to_char(hiredate,'dd/mm/yyyy') = mar;
else
update  mohammed4 set sal = 50 where to_char(hiredate,'dd/mm/yyyy') = mar;
end if;
end loop;
close mo_cursor;
commit;
end;

الحمــــــــد لله علــــــــــــى نعـــــــمة الاســــــــــــــــــــــــــلام




(من كان في حاجة أخيه كان الله في حاجته)

(الله في عون العبد ما كان العبد في عون أخيه )

ابـتـسـم .. فرزقك مقسوم, وقدرك محسوم، وأحوال الدنيا لا تستحق الهموم، لأنها بين يدى الحى القيوم

#2 chairman

chairman

    عضو نشط

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

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

اخوان ياريت حدى يعطيني جواب لان صارلي فترة وانا احاول ومافي نتيجة
الحمــــــــد لله علــــــــــــى نعـــــــمة الاســــــــــــــــــــــــــلام




(من كان في حاجة أخيه كان الله في حاجته)

(الله في عون العبد ما كان العبد في عون أخيه )

ابـتـسـم .. فرزقك مقسوم, وقدرك محسوم، وأحوال الدنيا لا تستحق الهموم، لأنها بين يدى الحى القيوم

#3 Abdallah.Hasan

Abdallah.Hasan

    مشترك

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

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

السلام عليكم اخي

اكتب هذا الكود .. واخبرني النتيجة

DECLARE
cursor mo_cursor is
select to_DATE(hiredate,'dd/mm/RRRR') HIREDATE,SAL from emp;
begin
for rec_1 in mo_cursor loop
if rec_1.hiredate BETWEEN TO_DATE('01/01/1981','dd/mm/RRRR')
AND TO_DATE('13/01/1981','dd/mm/RRRR') then
update emp
set sal = 1000
WHERE HIREDATE = REC_1.HIREDATE;
else
null;
end if;
end loop;
COMMIT;
end;
/

تم التعديل بواسطة Abdallah.Hasan, 22 May 2010 - 03:19 PM.

لا إله إلا انت سبحانـــك ... إني كنت من الظالمين

كن كما يريــــــــد الله ... يكن لك فوق ما تريـــــد




#4 Abdallah.Hasan

Abdallah.Hasan

    مشترك

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

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

اخي هناك ملاحظة

ان في التواريخ المدخلة لا يوجد إلا تاريخ واحد ضمن فترة التعديل

الرجاء ادخال بيانات اخرى ضمن الفترة ما بين 1/1/1981 و 13/1/1981

استخدم الكود أعلاه واخبرني النتيجة؟؟

تم التعديل بواسطة Abdallah.Hasan, 22 May 2010 - 03:32 PM.

لا إله إلا انت سبحانـــك ... إني كنت من الظالمين

كن كما يريــــــــد الله ... يكن لك فوق ما تريـــــد




#5 chairman

chairman

    عضو نشط

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

تاريخ المشاركة 22 May 2010 - 07:16 PM

اخي العزيز عبد الله جربت الكود واشتغل اسال الله العظيم ان يرزقك في الدنيا حسنة وفي الاخرة حسنة ويقيك من عذاب النار انت ووالديك ومن تحب ويزيد من علمك وفهمك


اخي الفاضل ممكن تتكرم على بأضافة شئ اخر الى الكود ، حيث اني عندما اكمل هذا الكود سأكون بأذن الله قد انهيت بحثي تقريبا في الجامعة
اذا ممكن عندما يتحقق الشرط اي اي عندما تكون بين مثلا 1/1/2000 - 1/1/2005 يتم تعديل الراتب sale الى 100 وفي نفس الوقت يتم تعديل الوظيفة job الى manager

اما اذا كان التاريخ بين 1/1/2006 الى 1/1/2010 يتم تعديل الراتب sale الى 200 وفي نفس الوقت يتم تعديل الوظيفة job الى clerk

حيث اني اريد ان اعمل اكثر من if اكثر من شرط وعمدما يتحقق كل منها يتم تعديل قيمة حقلين

بارك الله فيك وفي الجميع
الحمــــــــد لله علــــــــــــى نعـــــــمة الاســــــــــــــــــــــــــلام




(من كان في حاجة أخيه كان الله في حاجته)

(الله في عون العبد ما كان العبد في عون أخيه )

ابـتـسـم .. فرزقك مقسوم, وقدرك محسوم، وأحوال الدنيا لا تستحق الهموم، لأنها بين يدى الحى القيوم

#6 chairman

chairman

    عضو نشط

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

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

اخي العزيز عبد الله جربت الكود واشتغل (تم النفيذ على اكمل وجه) اسال الله العظيم ان يرزقك في الدنيا حسنة وفي الاخرة حسنة ويقيك من عذاب النار انت ووالديك ومن تحب ويزيد من علمك وفهمك


اخي الفاضل ممكن تتكرم على بأضافة شئ اخر الى الكود ، حيث اني عندما اكمل هذا الكود سأكون بأذن الله قد انهيت بحثي تقريبا في الجامعة
اذا ممكن عندما يتحقق الشرط اي اي عندما تكون بين مثلا 1/1/2000 - 1/1/2005 يتم تعديل الراتب sale الى 100 وفي نفس الوقت يتم تعديل الوظيفة job الى manager

اما اذا كان التاريخ بين 1/1/2006 الى 1/1/2010 يتم تعديل الراتب sale الى 200 وفي نفس الوقت يتم تعديل الوظيفة job الى clerk

حيث اني اريد ان اعمل اكثر من if اكثر من شرط وعمدما يتحقق كل منها يتم تعديل قيمة حقلين

بارك الله فيك وفي الجميع


الحمــــــــد لله علــــــــــــى نعـــــــمة الاســــــــــــــــــــــــــلام




(من كان في حاجة أخيه كان الله في حاجته)

(الله في عون العبد ما كان العبد في عون أخيه )

ابـتـسـم .. فرزقك مقسوم, وقدرك محسوم، وأحوال الدنيا لا تستحق الهموم، لأنها بين يدى الحى القيوم

#7 chairman

chairman

    عضو نشط

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

تاريخ المشاركة 22 May 2010 - 09:55 PM


اخي العزيز عبد الله جربت الكود واشتغل (تم النفيذ على اكمل وجه) اسال الله العظيم ان يرزقك في الدنيا حسنة وفي الاخرة حسنة ويقيك من عذاب النار انت ووالديك ومن تحب ويزيد من علمك وفهمك


اخي الفاضل ممكن تتكرم على بأضافة شئ اخر الى الكود ، حيث اني عندما اكمل هذا الكود سأكون بأذن الله قد انهيت بحثي تقريبا في الجامعة
اذا ممكن عندما يتحقق الشرط اي اي عندما تكون بين مثلا 1/1/2000 - 1/1/2005 يتم تعديل الراتب sale الى 100 وفي نفس الوقت يتم تعديل الوظيفة job الى manager

اما اذا كان التاريخ بين 1/1/2006 الى 1/1/2010 يتم تعديل الراتب sale الى 200 وفي نفس الوقت يتم تعديل الوظيفة job الى clerk

حيث اني اريد ان اعمل اكثر من if اكثر من شرط وعمدما يتحقق كل منها يتم تعديل قيمة حقلين

بارك الله فيك وفي الجميع


الحمــــــــد لله علــــــــــــى نعـــــــمة الاســــــــــــــــــــــــــلام




(من كان في حاجة أخيه كان الله في حاجته)

(الله في عون العبد ما كان العبد في عون أخيه )

ابـتـسـم .. فرزقك مقسوم, وقدرك محسوم، وأحوال الدنيا لا تستحق الهموم، لأنها بين يدى الحى القيوم

#8 Abdallah.Hasan

Abdallah.Hasan

    مشترك

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

تاريخ المشاركة 22 May 2010 - 11:11 PM

السلام عليكم اخي الكريم

تفضل الكود ... جربه وأخبرني النتيجة :


DECLARE
cursor mo_cursor is
select to_DATE(hiredate,'dd/mm/RRRR') HIREDATE,SAL,Job from emp;
begin
for rec_1 in mo_cursor loop

if rec_1.hiredate BETWEEN TO_DATE('01/01/2000','dd/mm/RRRR')
AND TO_DATE('01/01/2005','dd/mm/RRRR') then
update emp
set sal = 100 , job = 'Manager'
WHERE HIREDATE = REC_1.HIREDATE;

elsif rec_1.hiredate BETWEEN TO_DATE('01/01/2006','dd/mm/RRRR')
AND TO_DATE('01/01/2010','dd/mm/RRRR') then
update emp
set sal = 200 , job = 'Clerk'
WHERE HIREDATE = REC_1.HIREDATE;

else
null;
end if;
end loop;
COMMIT;
end;
/

لا إله إلا انت سبحانـــك ... إني كنت من الظالمين

كن كما يريــــــــد الله ... يكن لك فوق ما تريـــــد




#9 chairman

chairman

    عضو نشط

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

تاريخ المشاركة 23 May 2010 - 07:30 AM

بارك الله فيك يأ اخ عبد الله وسدد خطاك وزادك علم

الكود اشتغل وتنفذ



اللهم ارزقنا حبك وحب من احبك وحب عمل صالح يقربنا الى حبك

اللهم وفق الاخ عبد الله ، وسهل امره في الدنيا والاخرة ، هو ووالديه وكافة المسلمين يا أرحم الراحمين
الحمــــــــد لله علــــــــــــى نعـــــــمة الاســــــــــــــــــــــــــلام




(من كان في حاجة أخيه كان الله في حاجته)

(الله في عون العبد ما كان العبد في عون أخيه )

ابـتـسـم .. فرزقك مقسوم, وقدرك محسوم، وأحوال الدنيا لا تستحق الهموم، لأنها بين يدى الحى القيوم

#10 Abdallah.Hasan

Abdallah.Hasan

    مشترك

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

تاريخ المشاركة 23 May 2010 - 08:16 AM

بارك الله فيك يأ اخ عبد الله وسدد خطاك وزادك علم

الكود اشتغل وتنفذ



اللهم ارزقنا حبك وحب من احبك وحب عمل صالح يقربنا الى حبك

اللهم وفق الاخ عبد الله ، وسهل امره في الدنيا والاخرة ، هو ووالديه وكافة المسلمين يا أرحم الراحمين


بارك الله فيك أخي الكريم ... بالتوفيق إن شاء الله :rolleyes:

لا إله إلا انت سبحانـــك ... إني كنت من الظالمين

كن كما يريــــــــد الله ... يكن لك فوق ما تريـــــد