بتاريخ: 17 مايو 201015 سنة comment_192165 السلام عليكم أنا أعاني من مشكلة في الفانكشن حيث قمت بعملها على مستوى ENTERPRISE MANAGER حيث استعملت raise_application_error(-20001,'TEXT')، المشكلة عندما استعملها في الفورمز يظهر لي ORA-20001 NON TRAITER أرجو منكم المساعدة تقديم بلاغ
بتاريخ: 18 مايو 201015 سنة كاتب الموضوع comment_192204 function (m in number, e i date) return is dateselect nom into n from personnewhere m=matexception when others then raise_application_error(-2001,'Cette enregistrement n''existe pas');end; تقديم بلاغ
بتاريخ: 18 مايو 201015 سنة comment_192214 function (m in number, e i date) return is dateselect nom into n from personnewhere m=matexception when others then raise_application_error(-2001,'Cette enregistrement n''existe pas');end; أخي الحبيب واضح من الفنكشن انها معموله علي الفورم مش علي الداتا بيز ولا كانت علي قاعدة البيانات كنت كتبت create function وبما أنها علي علي الفورم فلا يتأتي معها exception when others then raise_application_error(-2001,'Cette enregistrement n''existe pas');وعلي الفورم ممكنexception when others then message(-2001,'Cette enregistrement n''existe pas');أما اذا كانت الفنكشن تقصد أنها علي قاعدة البيانات وليس علي الفورم حاول مره ثانية بتصحيح الكود حيث توجد لديك أخطاء من ضمنها1- اسم الفنكشن غير موجود 2-المتغير الذي تعرف داخله ايضا غير موجود وهو N3- انت عامل الفنكشن ترجع تاريخ رغم ان num باين عليه رقم مش تاريخ4-لم تقم بعمل return للمتغير5- where m=mat يجب ان تكون where m='mat'واليك الكود بعد التعديل Craete or replace function xx return number is n personne.nom%type; begin select nom into n from personne where m='mat'; return(n); exception when others then raise_application_error(-2001,'Cette enregistrement n''existe pas'); end; وممكن تطورها بدل where = قيمة ثانته كالتالي Craete or replace function xx(p_name in varchar2) return number is n personne.nom%type; begin select nom into n from personne where m=p_name; return(n); exception when others then raise_application_error(-2001,'Cette enregistrement n''existe pas'); end; مثال اخر create or replace function Get_emp_name(p_empno emp.empno%type) return varchar2 is l_ename emp.ename%type; l_result emp.ename%type; begin if p_empno is null Then raise_application_error(-20001,'لم يتم العثور على رقم الموظف'); end if; select ename into l_ename from emp where empno =p_empno; return l_ename; Exception when others then raise_application_error(-20001,'Error in get_Emp_name :' || sqlerrm); end; بالتوفيق تقديم بلاغ
بتاريخ: 19 مايو 201015 سنة كاتب الموضوع comment_192362 بارك الله فيك أخي العزيز سوف أعمل بهذا الكود وسيعمل ان شاء الله وسوف تلقى الرد شكرا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.