الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ما معنى هذا الخطاء

Featured Replies

بتاريخ:

السلام عليكم

يوجد عندي تقرير ولكن عند عمل RUN له يخرج هذا الخطأ

RUN 1401-:CF_1FORMULA0008':FATAL PL/SQL ERROR OCCURED
ORA01422:EXACT FETCH RETURNSMORE THAN REQUESTED NUMBER OF ROWS

ولكم جزيل الشكر

بتاريخ:

حضرتك عامل فروميولا كولم ، والفرميولا ده مرجعه اكتر من ريكورد ....
المفروض ترجع قيمة واحدة بس

بتاريخ:
  • كاتب الموضوع

يعطيك العافية

أنا بدي الفوميولا تعطيني أكتر من ريكورد
فكيف يمكنني إيجاد الخطأ ومعاجته

وشكرا

بتاريخ:

u need cursor

بتاريخ:
  • كاتب الموضوع

انا كتبت هذا الكود

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 OCCURED
ORA-06502:PL/SQL:NIMIRIC OR VALUE ERROR
فما الخطأ
وشكرا

بتاريخ:

عزيزي المشكلة لديك انه تعيد اكثر من ريكورد عن طريق الكيرسر الى متغير واحد وهذا الشيء غير مقبول

لذلك يجب التأكد من الشرط المعطى ليعيد فقط ريكورد واحد عند تنفيذ الفنكشن

والمقصود هنا ريكورد واحد في كل مرة يتم منادات الفنكشن ولتم منادات الفنكشن عند كل ريكورد ضع هذه الفورملا ضمن مجموعة السجلات التي تستعلم عنها

اي ان تكون معها في مجموعة واحدة

وأتوقع ان الشرط الذي يجب اضافته على الكود هو

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;

بتاريخ:

بص ياباشا .... حضرتك عندك 3 اخطاء في الكود ده
الاول زي ما قال الاخ احمد ...ان الفانكشن بترجع قيمة char مع انك قايل في تعريفها return number
تاني حاجة في موضوع ال FETCH
انت مرجع قيمتين وانت مش واخد بالك
انت بتقوله

IF C%NOTFOUND
THEN
D:='NO';
RETURN (D);


الشرط ده معناه ايه ؟؟؟؟
معناه انه لو مفيش داتا يرجع كلمة NO

وفي نفس الوقت قايل تحت

EXCEPTION
WHEN 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;

بتاريخ:
  • كاتب الموضوع

يعطيكم العافية جميعا
وشكرا لكم الرائع ومساعدتكم لي

والحمد لله الأمور مشيت تمام

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.