بتاريخ: 7 ديسمبر 201015 سنة comment_204839 السلام عليكم ،،أريد عمل 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 ; وجزاكم الله خيرا ،، تقديم بلاغ
بتاريخ: 7 ديسمبر 201015 سنة comment_204841 بص انت اكتب الكود دا 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 ديسمبر 201015 سنة بواسطة HELL-BOY تقديم بلاغ
بتاريخ: 8 ديسمبر 201015 سنة كاتب الموضوع comment_204866 شكرا لك أخى Hell-Boy على مجهودك ،،، تقديم بلاغ
بتاريخ: 8 ديسمبر 201015 سنة comment_204869 العفو اخي الكريم انت ممكن تستغني عن اللوب تماما لانها هترجع قيمه واحده فانت مش محتاج تعمل لوب انا كتبتهالك علشان بتبقا اسهل من انك تعمل ديكلير للكرسور بعد كدا تلوب عليه كلمه where current of cursor_nameبنكتبها لما الكرسور بيعمل ابضيت بس زي كداcursor waleed is select * from emp for updateهنا هنحتاج نكتب update emp set sal = sal*1.1where current of cursor_name تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.