بتاريخ: 1 يونيو 201411 سنة comment_251385 السلام عليكم عندي كود على button في فورمه , الكود عبارة عن loop وفيها مجموعة من ال select لو تم استرجاع بيانات من السيلكت بعمل update ولو مسترجعتش بيانات عايزة يكمل loop عادي وميطلعش الايرور ده ora-01403 no data found كيف يمكن حل هذة المشكلة وجزاكم الله خيرا تقديم بلاغ
بتاريخ: 1 يونيو 201411 سنة comment_251390 السلام عليكم اضف Exception للكود او ارفق الكود لكي يتم الاطلاع عليه ؟ تقديم بلاغ
بتاريخ: 1 يونيو 201411 سنة كاتب الموضوع comment_251392 السلام عليكم الكود كتالي : 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; تم تعديل 1 يونيو 201411 سنة بواسطة Ahmad.Hasan تقديم بلاغ
بتاريخ: 1 يونيو 201411 سنة comment_251393 السلام عليكم جرب الكود التالي: 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; تقديم بلاغ
بتاريخ: 2 يونيو 201411 سنة comment_251446 يا باشا , الكرسور مش بيطلع اصلا no_data_found , ولا كانه شافها الا لو انت قلتله if cursor%notfound then .......... حط جمل السيليكت الي انت عاملها دي في كرسور واعمل فيتش تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.