mohamed.ali بتاريخ: 7 ديسمبر 2010 تقديم بلاغ مشاركة بتاريخ: 7 ديسمبر 2010 السلام عليكم ،،أريد عمل Function يحتوى على Parameter عبارة عن رقم الموظف بحيث عندما أدخل رقم الموظف تقوم بإرجاع عدد سنوات الخدمة .فما الخطأ فى هذا الكوك..مع الشرح إذا سمحتم! create or replace function get_service_yrs(p_empno in t_emp.empno%type) return number IS v_yrs number(30) ; cursor emp_rec is select empno,ename,hiredate from t_emp where empno=p_empno ; begin for x in emp_rec loop select (sysdate-hiredate)/365 service into v_yrs from t_emp where current of emp_rec ; end loop ; return v_yrs ; وجزاكم الله خيرا ،، اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
HELL-BOY بتاريخ: 7 ديسمبر 2010 تقديم بلاغ مشاركة بتاريخ: 7 ديسمبر 2010 (معدل) بص انت اكتب الكود دا CREATE FUNCTION GET_SERV(EMP NUMBER) RETURN NUMBER IS s_date number; BEGIN FOR I IN (SELECT * FROM t_emp where empno=emp) loop s_date := round((sysdate-i.hire_date)/365); end loop; return s_date; end; تم تعديل 7 ديسمبر 2010 بواسطة HELL-BOY اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohamed.ali بتاريخ: 8 ديسمبر 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 8 ديسمبر 2010 شكرا لك أخى Hell-Boy على مجهودك ،،، اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
HELL-BOY بتاريخ: 8 ديسمبر 2010 تقديم بلاغ مشاركة بتاريخ: 8 ديسمبر 2010 العفو اخي الكريم انت ممكن تستغني عن اللوب تماما لانها هترجع قيمه واحده فانت مش محتاج تعمل لوب انا كتبتهالك علشان بتبقا اسهل من انك تعمل ديكلير للكرسور بعد كدا تلوب عليه كلمه where current of cursor_nameبنكتبها لما الكرسور بيعمل ابضيت بس زي كداcursor waleed is select * from emp for updateهنا هنحتاج نكتب update emp set sal = sal*1.1where current of cursor_name اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.