بتاريخ: 13 سبتمبر 200916 سنة comment_169537 السلام عليكميوجد عندي تقرير ولكن عند عمل RUN له يخرج هذا الخطأRUN 1401-:CF_1FORMULA0008':FATAL PL/SQL ERROR OCCUREDORA01422:EXACT FETCH RETURNSMORE THAN REQUESTED NUMBER OF ROWSولكم جزيل الشكر تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة comment_169539 حضرتك عامل فروميولا كولم ، والفرميولا ده مرجعه اكتر من ريكورد ....المفروض ترجع قيمة واحدة بس تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة كاتب الموضوع comment_169541 يعطيك العافية أنا بدي الفوميولا تعطيني أكتر من ريكورد فكيف يمكنني إيجاد الخطأ ومعاجتهوشكرا تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة كاتب الموضوع comment_169598 انا كتبت هذا الكود FUNCTION CF_DEPT RETURN NUMBER IS D VARCHAR2(100); CURSOR C IS SELECT A.DNAME FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO; BEGIN OPEN C; FETCH C INTO D; IF C%NOTFOUND THEN D:='NO'; RETURN (D); CLOSE C; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; و أعطاني هذا الخطأREP-1401:'CF_DEPTFORMULA':FATAL PL/SQL ERROR OCCUREDORA-06502:PL/SQL:NIMIRIC OR VALUE ERRORفما الخطأوشكرا تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة comment_169602 جرب غير الكود الى التالي:FUNCTION CF_DEPT RETURN CHAR IS تقديم بلاغ
بتاريخ: 13 سبتمبر 200916 سنة comment_169613 عزيزي المشكلة لديك انه تعيد اكثر من ريكورد عن طريق الكيرسر الى متغير واحد وهذا الشيء غير مقبول لذلك يجب التأكد من الشرط المعطى ليعيد فقط ريكورد واحد عند تنفيذ الفنكشن والمقصود هنا ريكورد واحد في كل مرة يتم منادات الفنكشن ولتم منادات الفنكشن عند كل ريكورد ضع هذه الفورملا ضمن مجموعة السجلات التي تستعلم عنهااي ان تكون معها في مجموعة واحدة وأتوقع ان الشرط الذي يجب اضافته على الكود هو empno=:empnoوسيصبح الكود كالتالي FUNCTION CF_DEPT RETURN NUMBER IS D VARCHAR2(100); CURSOR C IS SELECT A.DNAME FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO and empno=:empno; BEGIN OPEN C; FETCH C INTO D; IF C%NOTFOUND THEN D:='NO'; RETURN (D); CLOSE C; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; تقديم بلاغ
بتاريخ: 14 سبتمبر 200916 سنة comment_169661 بص ياباشا .... حضرتك عندك 3 اخطاء في الكود ده الاول زي ما قال الاخ احمد ...ان الفانكشن بترجع قيمة char مع انك قايل في تعريفها return number تاني حاجة في موضوع ال FETCH انت مرجع قيمتين وانت مش واخد بالك انت بتقوله IF C%NOTFOUNDTHEND:='NO';RETURN (D); الشرط ده معناه ايه ؟؟؟؟معناه انه لو مفيش داتا يرجع كلمة NO وفي نفس الوقت قايل تحت EXCEPTIONWHEN NO_DATA_FOUND يرجع قيمة NULL يبقى ازاي بأه ؟؟؟؟؟؟؟ثالث حاجة حضرتك مش قافل IF .... يعني مفيش END IF ;ثانياً ايه فايده EXCEPTIONطالما حضرتك عامل كيرسور ....؟؟--- كمان كلام الاخ جاد صحيح ... انت كده هتجيب كل الادارات بتاعة الموظفين ... وبالتالي هيرجع مالتي ريكورد يبقى ممكن نعدل على الكود ويكون كده FUNCTION cf_dept RETURN CHAR IS d VARCHAR2 (100); CURSOR c IS SELECT a.dname FROM dept a, emp b WHERE a.deptno = b.deptno AND empno =:empno; BEGIN OPEN c; FETCH c INTO d; CLOSE c; RETURN NVL (d, 'NO'); END; تقديم بلاغ
بتاريخ: 14 سبتمبر 200916 سنة كاتب الموضوع comment_169690 يعطيكم العافية جميعا وشكرا لكم الرائع ومساعدتكم ليوالحمد لله الأمور مشيت تمام تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.