Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-02291: integrity constraint (.) violated - parent key not found

user11383873Aug 31 2014 — edited Sep 2 2014

Hello I would to understand this error

ERROR MSG:

ORA-02291: integrity constraint (.) violated - parent key not found

ERROR ORA-24381: error(s) in array DML

ORA-06512: at line 492

SQL CODE:

        open cNewDocData;

        loop

            fetch cNewDocData

            bulk collect into rNewDocData

            limit 10000;

            for i in 1 .. rNewDocData.count loop

                begin

                    NEXTFREE.GETVALUE ('MAX_OHXACT', rOrderHdrAll (v_id_order).ohxact);

                end;

               

                select decode (sign (rNewDocData (i).amt_pen), -1, 'CO', 'FC') into rOrderHdrAll (v_id_order).ohstatus from dual;

                rOrderHdrAll (v_id_order).ohentdate := trunc (sysdate);

                rOrderHdrAll (v_id_order).ohrefnum := 'Saldo Inicial';

                rOrderHdrAll (v_id_order).customer_id := rNewDocData (i).customer_id;

                rOrderHdrAll (v_id_order).ohrefdate := trunc (sysdate);

                rOrderHdrAll (v_id_order).ohduedate := trunc (rNewDocData (i).due_date);

                rOrderHdrAll (v_id_order).ohipp := rNewDocData (i).lbc_date;

                select decode (sign (rNewDocData (i).amt_pen), -1, v_glNegative, v_glPositive) into rOrderHdrAll (v_id_order).ohglar from dual;

                rOrderHdrAll (v_id_order).ohmod := 'X';

                rOrderHdrAll (v_id_order).gl_currency := v_fcId;

                rOrderHdrAll (v_id_order).document_currency := v_fcId;

                rOrderHdrAll (v_id_order).document_convratetype_id := 1;

                rOrderHdrAll (v_id_order).ohinvamt_gl := rNewDocData (i).amt_pen;

                rOrderHdrAll (v_id_order).ohopnamt_gl := rNewDocData (i).amt_pen;

                rOrderHdrAll (v_id_order).ohinvamt_doc := rNewDocData (i).amt_pen;

                rOrderHdrAll (v_id_order).ohopnamt_doc := rNewDocData (i).amt_pen;

                rOrderHdrAll (v_id_order).gl_convratetype_id := 1;

                rOrderHdrAll (v_id_order).currency := v_fcId;

                rOrderHdrAll (v_id_order).rec_version := 0;

                select decode (rNewDocData (i).billing_account_id, -1, null, rNewDocData (i).billing_account_id) into rOrderHdrAll (v_id_order).billing_account_id from dual;

                if rNewDocData (i).amt_pen >= 0 then

                    v_countFC := v_countFC + 1;

                    rOrderTrailer (v_id_detail).otxact := rOrderHdrAll (v_id_order).ohxact;

                    rOrderTrailer (v_id_detail).otseq := 1;

                    rOrderTrailer (v_id_detail).ottransaction_date := trunc (sysdate);

                    rOrderTrailer (v_id_detail).gl_currency := v_fcId;

                    rOrderTrailer (v_id_detail).document_currency := v_fcId;

                    rOrderTrailer (v_id_detail).otamt_revenue_gl := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otamt_revenue_gross_gl := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otmerch_gl := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otmerch_gross_gl := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otamt_revenue_doc := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otamt_revenue_gross_doc := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otmerch_doc := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).otmerch_gross_doc := rNewDocData (i).amt_pen;

                    rOrderTrailer (v_id_detail).rec_version := 0;

                    rOrderTrailer (v_id_detail).tax_calculation_type := 'N';

                    rOrderTrailer (v_id_detail).payment_option := 'P';

                    rOrderTaxItens (v_id_detail).otxact := rOrderHdrAll (v_id_order).ohxact;

                    rOrderTaxItens (v_id_detail).oti_seqno := 1;

                    rOrderTaxItens (v_id_detail).taxcat_id := 2;

                    rOrderTaxItens (v_id_detail).taxrate := 0;

                    rOrderTaxItens (v_id_detail).taxcalcbase := 'R';

                    rOrderTaxItens (v_id_detail).glacode := v_glPositive;

                    rOrderTaxItens (v_id_detail).tax_currency := v_fcId;

                    rOrderTaxItens (v_id_detail).gl_currency := v_fcId;

                    rOrderTaxItens (v_id_detail).document_currency := v_fcId;

                    rOrderTaxItens (v_id_detail).taxamt_exempted_gl := 0;

                    rOrderTaxItens (v_id_detail).taxamt_tax_curr := 0;

                    rOrderTaxItens (v_id_detail).taxamt_exempted_tax_curr := 0;

                    rOrderTaxItens (v_id_detail).taxamt_gl := 0;

                    rOrderTaxItens (v_id_detail).taxamt_doc := 0;

                    rOrderTaxItens (v_id_detail).taxamt_exempted_doc := 0;

                    rOrderTaxItens (v_id_detail).rec_version := 0;

                    rOrderTaxItens (v_id_detail).payment_option := 'P';

                    rOrderTrailerTaxItems (v_id_detail).otxact := rOrderHdrAll (v_id_order).ohxact;

                    rOrderTrailerTaxItems (v_id_detail).otseq := 1;

                    rOrderTrailerTaxItems (v_id_detail).taxcode := 2;

                    rOrderTrailerTaxItems (v_id_detail).oti_seqno := 1;

                    rOrderTrailerTaxItems (v_id_detail).tax_seqno := 1;

                    rOrderTrailerTaxItems (v_id_detail).rec_version := 0;

                    v_id_detail := v_id_detail + 1;

                else

                    v_countCO := v_countCO + 1;

                end if;

               

                rOhxact := rOrderHdrAll (v_id_order).ohxact;

                rCustomerid := rNewDocData (i).customer_id;

                v_count := v_count + 1;

                v_id_order := v_id_order + 1;

            end loop;

            begin

                forall j in 1 .. rOrderHdrAll.count

                save exceptions

                    insert into orderhdr_all

                         values rOrderHdrAll (j);

            exception

                when bulkerrors then

                    dbms_output.put_line ('WARNING - Error on ORDERHDR_ALL insert');

                    for w in 1 .. sql%bulk_exceptions.count loop

                        dbms_output.put_line (sql%bulk_exceptions (w).error_index || ', ' || sqlerrm (-sql%bulk_exceptions (w).error_code));

                        dbms_output.put_line ('SELECT * FROM TMP_CUST_AMOUNTS WHERE CUSTOMER_ID = ' || rOrderHdrAll (w).customer_id || ';');

                    end loop;

                    raise;

            end;

            commit;

            exit when cNewDocData%notfound;

        end loop;

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 30 2014
Added on Aug 31 2014
2 comments
739 views