الانتقال إلى المحتوى
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.

مشكلة مع الايرور Ora-01403 No Data Found

Featured Replies

بتاريخ:

السلام عليكم

 

عندي كود على button في فورمه , الكود عبارة عن loop وفيها مجموعة من ال select لو تم استرجاع بيانات من السيلكت بعمل update ولو مسترجعتش بيانات عايزة يكمل loop عادي وميطلعش الايرور ده 

 

ora-01403 no data found

 

 

كيف يمكن حل هذة المشكلة

 

وجزاكم الله خيرا

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

السلام عليكم

 

الكود كتالي :

 

DECLARE
   CURSOR loan_cur
   IS
      SELECT ID, person_id
        FROM xx_loan_view;


   li_serial      NUMBER;
   li_perosn_id   NUMBER;
   li_hr_amount   NUMBER;
   li_debit       NUMBER;
   ld_jour_date   DATE;
BEGIN
   OPEN loan_cur;


   LOOP
      FETCH loan_cur
       INTO li_serial, li_perosn_id;


      EXIT WHEN loan_cur%NOTFOUND;


      SELECT gl.entered_dr, gl.effective_date
        INTO li_debit, ld_jour_date
        FROM gl_je_lines gl, gl_code_combinations cc, gl_je_headers gjh
       WHERE cc.code_combination_id = gl.code_combination_id
         AND gl.je_header_id = gjh.je_header_id
         AND gjh.currency_code = 'SAR'
         AND TRUNC (gjh.default_effective_date) > '01/05/2014'
         AND gjh.ledger_id = 1005
         AND gl.attribute2 = TO_CHAR (li_serial)
         AND gl.code_combination_id IN
                (11642, 11643, 11644, 11645, 11646, 11647, 11648, 11649,
                 13820, 11650, 59880, 59881, 12484, 13810, 13811, 13812,
                 13813, 13814, 13815, 13816, 13817, 13818, 67962, 59848,
                 67963, 132136, 213216, 251272, 85057, 67964);


      SELECT f_get_hr_loan_amount (li_serial, paaf.assignment_id)
        INTO li_hr_amount
        FROM per_all_people_f papf, per_all_assignments_f paaf
       WHERE TRUNC (SYSDATE) BETWEEN papf.effective_start_date
                                 AND papf.effective_end_date
         AND TRUNC (SYSDATE) BETWEEN paaf.effective_start_date
                                 AND paaf.effective_end_date
         AND papf.person_id = paaf.person_id
         AND papf.person_id = li_perosn_id;


      IF     li_debit IS NOT NULL
         AND ld_jour_date IS NOT NULL
         AND li_hr_amount IS NOT NULL
      THEN
         UPDATE xx_loan_requests
            SET gl_amount = li_debit,
                gl_journal_date = ld_jour_date,
                hr_amount = li_hr_amount,
                flage = 1,
                update_date = SYSDATE
          WHERE ID = li_serial AND person_id = li_perosn_id;
      ELSE
         UPDATE xx_loan_requests
            SET gl_amount = NVL (li_debit, 0),
                gl_journal_date = NVL (ld_jour_date, '01/01/1900'),
                hr_amount = NVL (li_hr_amount, 0),
                update_date = SYSDATE
          WHERE ID = li_serial AND person_id = li_perosn_id;
      END IF;
   END LOOP;


   COMMIT;


   CLOSE loan_cur;


   :req_blk.last_date := SYSDATE;
END;

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:

السلام عليكم

جرب الكود التالي:

 

DECLARE
   CURSOR loan_cur
   IS
      SELECT ID, person_id
        FROM xx_loan_view;


   li_serial      NUMBER;
   li_perosn_id   NUMBER;
   li_hr_amount   NUMBER;
   li_debit       NUMBER;
   ld_jour_date   DATE;
BEGIN
   OPEN loan_cur;


   LOOP
      FETCH loan_cur
       INTO li_serial, li_perosn_id;


      EXIT WHEN loan_cur%NOTFOUND;


      BEGIN
         SELECT gl.entered_dr, gl.effective_date
           INTO li_debit, ld_jour_date
           FROM gl_je_lines gl, gl_code_combinations cc, gl_je_headers gjh
          WHERE cc.code_combination_id = gl.code_combination_id
            AND gl.je_header_id = gjh.je_header_id
            AND gjh.currency_code = 'SAR'
            AND TRUNC (gjh.default_effective_date) > '01/05/2014'
            AND gjh.ledger_id = 1005
            AND gl.attribute2 = TO_CHAR (li_serial)
            AND gl.code_combination_id IN
                   (11642, 11643, 11644, 11645, 11646, 11647, 11648, 11649,
                    13820, 11650, 59880, 59881, 12484, 13810, 13811, 13812,
                    13813, 13814, 13815, 13816, 13817, 13818, 67962, 59848,
                    67963, 132136, 213216, 251272, 85057, 67964);
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
      END;


      BEGIN
         SELECT f_get_hr_loan_amount (li_serial, paaf.assignment_id)
           INTO li_hr_amount
           FROM per_all_people_f papf, per_all_assignments_f paaf
          WHERE TRUNC (SYSDATE) BETWEEN papf.effective_start_date
                                    AND papf.effective_end_date
            AND TRUNC (SYSDATE) BETWEEN paaf.effective_start_date
                                    AND paaf.effective_end_date
            AND papf.person_id = paaf.person_id
            AND papf.person_id = li_perosn_id;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
      END;


      IF     li_debit IS NOT NULL
         AND ld_jour_date IS NOT NULL
         AND li_hr_amount IS NOT NULL
      THEN
         UPDATE xx_loan_requests
            SET gl_amount = li_debit,
                gl_journal_date = ld_jour_date,
                hr_amount = li_hr_amount,
                flage = 1,
                update_date = SYSDATE
          WHERE ID = li_serial AND person_id = li_perosn_id;
      ELSE
         UPDATE xx_loan_requests
            SET gl_amount = NVL (li_debit, 0),
                gl_journal_date = NVL (ld_jour_date, '01/01/1900'),
                hr_amount = NVL (li_hr_amount, 0),
                update_date = SYSDATE
          WHERE ID = li_serial AND person_id = li_perosn_id;
      END IF;
   END LOOP;


   COMMIT;


   CLOSE loan_cur;


   :req_blk.last_date := SYSDATE;
END;
بتاريخ:
  • كاتب الموضوع

جزاك الله خيرا

بتاريخ:

يا باشا , الكرسور مش بيطلع اصلا no_data_found , ولا كانه شافها

الا لو انت قلتله

if cursor%notfound

then

..........

حط جمل السيليكت الي انت عاملها دي في كرسور واعمل فيتش

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

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

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

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

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

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.