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

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

صورة
- - - - -

ما الخطأ فى هذا الكود... Function يحتوى على Parameter


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

#1 mohamed.ali

mohamed.ali

    مشترك

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

تاريخ المشاركة 07 December 2010 - 04:50 PM

السلام عليكم ،،
أريد عمل 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 ;
وجزاكم الله خيرا ،،

#2 HELL-BOY

HELL-BOY

    مشترك

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

تاريخ المشاركة 07 December 2010 - 06:06 PM

بص انت اكتب الكود دا
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;

تم التعديل بواسطة HELL-BOY, 07 December 2010 - 06:08 PM.

ORACLE 10G DEVELOPER


ORACLE 11G ADMIN

 

مطلوب شريك لتسويق برنامج حسابات ومخازن

waleed.ita@gmail.com

http://hodaerp.blogspot.com/

 

 


#3 mohamed.ali

mohamed.ali

    مشترك

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

تاريخ المشاركة 08 December 2010 - 07:38 AM

شكرا لك أخى Hell-Boy على مجهودك ،،،

#4 HELL-BOY

HELL-BOY

    مشترك

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

تاريخ المشاركة 08 December 2010 - 08:00 AM

العفو اخي الكريم
انت ممكن تستغني عن اللوب تماما لانها هترجع قيمه واحده فانت مش محتاج تعمل لوب
انا كتبتهالك علشان بتبقا اسهل من انك تعمل ديكلير للكرسور بعد كدا تلوب عليه
كلمه
where current of cursor_name
بنكتبها لما الكرسور بيعمل ابضيت بس زي كدا

cursor waleed is select * from emp for update

هنا هنحتاج نكتب
update emp set sal = sal*1.1
where current of cursor_name

ORACLE 10G DEVELOPER


ORACLE 11G ADMIN

 

مطلوب شريك لتسويق برنامج حسابات ومخازن

waleed.ita@gmail.com

http://hodaerp.blogspot.com/