Nested PL/sql tables passing of ADF

Hi all

I'm moving a nested pl/sql table parameter of adf for the stored procedure.

I have the following code to bind the variable in my AMImpl

ArrayDescriptor desc = ArrayDescriptor.createDescriptor ("STATION_FEATURES_T", st.getConnection ());

TABLE array = new ARRAY (desc, st.getConnection (), stationFeatures);

For the first time, the code runs successfully. However, on the call to the AMImpl method even once, the ArrayDescriptor.createDescriptor get the following error:

java.lang.ClassCastException: oracle.jdbc.proxy.oracle$ $1jdbc $1replay $1driver $1NonTxnReplayableBase $2oracle $1jdbc $1OracleTypeMetaData Array$ $$Proxy cannot be cast to oracle.sql.ArrayDescriptor

I checked that the connection object is done correctly both times.

I also tried to set the setting force = true in ArrayDescriptor.createDescriptor to replace any descriptor be cached.

Pointers would be much appreciated.

You must mention jdev version because there are changes in the ojdbc7 driver (jdev 12 c +).

For example, this (old) approach with ArrayDescriptor.createDescriptor () is deprecated in favour of factory of conn.createOracleArray () or conn.createARRAY () methods.

Also, how do you get 'st' object?

Dario

Tags: Java

Similar Questions

  • I can pass a pl/sql table as a parameter for a database adapter

    Hello

    I'm moving mutiple files back to a pl/sql stored procedure using a BPEL database adapter. Does anyone know if it is possible to make pl/sql tables to bpel as a parameter?

    The version of the database that we use is 8.1.7 and so I do not think that we use XMl types for transmitting data.

    Yes you can not spend the function PL/SQL nested tables in JDBC. You can pass simple values such as VARCHAR2, NUMBER and Oracle SQL object types (VARRAY, nested TABLE, OBJECT).

    Types defined in PL/SQL are simply not supported by the JDBC driver (except the basic support for the index per table, but 1 level of depth). PL/SQL types are not very good to use, because then you can not use them in SQL in PL/SQL statements, SQL types do not have these limitations.

  • Load an XML nested in a table nested PL/SQL (associative)

    Hello

    I'm fairly new to XML in PL/SQL and dealing with a complex case as follows:

    < Message >

    < HEADER >

    SW20130102-01 of < Filename > < / name >

    SWITCH < FILE_TYPE > < / Type_de_fichier >

    < / Header >

    < BODY >

    < POLICY_LIST >

    <>POLICY

    CLIENT < INSTRUCTION_SOURCE > < / INSTRUCTION_SOURCE >

    < POLICY_NO > 401-002298 < / POLICY_NO >

    < SWITCH_LIST >

    < SWITCH >

    < COMMON_ID > 101 < / COMMON_ID >

    < SWITCH_TYPE > P < / SWITCH_TYPE >

    < SWITCH_CHARGE > 100,00 < / SWITCH_CHARGE >

    < EFFECTIVE_DATE > < / EFFECTIVE_DATE >

    < FUND_LIST >

    < FUND >

    < FUND_CODE > 1069 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 100,00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    SELL < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1003001 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 25.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1070 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 75.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < / FUND_LIST >

    < / SWITCH >

    < SWITCH >

    < COMMON_ID > 102 < / COMMON_ID >

    < SWITCH_TYPE > P < / SWITCH_TYPE >

    < SWITCH_CHARGE > 100,00 < / SWITCH_CHARGE >

    < EFFECTIVE_DATE > < / EFFECTIVE_DATE >

    < FUND_LIST >

    < FUND >

    < FUND_CODE > 1055 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 100,00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    SELL < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1003012 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 25.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1068 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 75.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < / FUND_LIST >

    < / SWITCH >

    < / SWITCH_LIST >

    < / POLICY >

    <>POLICY

    CLIENT < INSTRUCTION_SOURCE > < / INSTRUCTION_SOURCE >

    < POLICY_NO > 401-002300 < / POLICY_NO >

    < SWITCH_LIST >

    < SWITCH >

    < COMMON_ID > 101 < / COMMON_ID >

    < SWITCH_TYPE > P < / SWITCH_TYPE >

    < SWITCH_CHARGE > 100,00 < / SWITCH_CHARGE >

    < EFFECTIVE_DATE > < / EFFECTIVE_DATE >

    < FUND_LIST >

    < FUND >

    < FUND_CODE > 1090 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 100,00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    SELL < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1091 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 25.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1092 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 75.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < / FUND_LIST >

    < / SWITCH >

    < SWITCH >

    < COMMON_ID > 103 < / COMMON_ID >

    < SWITCH_TYPE > P < / SWITCH_TYPE >

    < SWITCH_CHARGE > 100,00 < / SWITCH_CHARGE >

    < EFFECTIVE_DATE > < / EFFECTIVE_DATE >

    < FUND_LIST >

    < FUND >

    < FUND_CODE > 1069 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 100,00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    SELL < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1003001 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 25.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < FUND >

    < FUND_CODE > 1070 < / FUND_CODE >

    < INVEST_MODEL > 1 < / INVEST_MODEL >

    < > 50.00 PERC < / PERC >

    < AMOUNT > < / AMOUNT >

    < SWITCH_CHARGE > 75.00 < / SWITCH_CHARGE >

    N < traded > < / SHARED >

    BUY < BUY_SELL > < / BUY_SELL >

    < / FUND >

    < / FUND_LIST >

    < / SWITCH >

    < / SWITCH_LIST >

    < / POLICY >

    < / POLICY_LIST >

    < / BODY >

    < / MSG >

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    In this XML file, I have a POLICY_LIST tag that may have one or more political entities. Each political entity has a SWICH_LIST that could have multiple SWITCHES. And each SWITCH has a FUND_LIST with several funds. With a lot of research on the net I found the following way to read this XML only once in a PL/SQL table as follows

    Select p.policy_no

    p.instruction_source

    s.common_id

    s.switch_type

    s.switch_charge

    s.effdate

    f.fund_code

    f.invest_model

    f.buy_sell

    f.perc

    f.amount

    f.fund_switch_charge

    bulk collect into v_temp_switch_tab

    from xmltable ('/ MSG/BODY/POLICY_LIST/POLICY ' from v_request_xml)

    path of columns policy_no varchar2 (20) "POLICY_NO".

    , path of varchar2 (50) instruction_source 'INSTRUCTION_SOURCE '.

    , path of xmltype switch_list "SWITCH_LIST".

    ) p

    , xmltable (' SWITCH_LIST/SWITCH ' in passing p.switch_list)

    path of columns common_id varchar2 (50) 'COMMON_ID '.

    , path of varchar2 (1) switch_type "SWITCH_TYPE.

    , path number switch_charge "SWITCH_CHARGE".

    , path is effdate "EFFECTIVE_DATE".

    , path of xmltype fund_list "FUND_LIST".

    + 1

    , xmltable (' FUND_LIST/FUND ' in passing s.fund_list)

    path of columns fund_code varchar2 (10) 'FUND_CODE '.

    , path number invest_model "INVEST_MODEL".

    , path number perc "PERC."

    , path number amount 'AMOUNT '.

    , path of varchar2 (10) buy_sell 'BUY_SELL '.

    path number fund_switch_charge 'SWITCH_CHARGE') f;

    --------------------------------------------------------------------------

    Problem with this approach is that I have to depend on one of the tag values to separate several tags switch on the same label POLICY. Is there a better way to do it? as by reading the XML in one go (collect in bulk) and obtaining of the link based on the grouping of tags in the XML of entry? Hope my explanation of the issue at hand is clear

    Thank you very much for taking the time to understand it.

    Parag

    Hey guys

    A BIG Thank YOU to you two to help out me!

    The clause ordinalite does the trick.

    Thanks again

    Parag

  • Pass Pl/sql table in the USING clause in the EXECUTE IMMEDIATE statement

    Getting error when I try to pass the PL/SQL table in the USING clause in the EXECUTE IMMEDIATE statement:

    Declare
    result NUMBER;
    TYPE values_tab IS TABLE OF NUMBER INDEX OF directory;
    lv_tab values_tab;
    lv_exp varchar2 (300);
    lv_exec varchar2 (300);
    BEGIN
    lv_tab (1): = 5;
    lv_tab (2): = 48;
    lv_tab (3): = 7;
    lv_tab (4): = 6;
    lv_exp: = ': + b1: b2 + (: b3 *: b4)';
    lv_exec: = 'SELECT'. lv_exp | ' THE DOUBLE '.

    IMMEDIATE EXECUTION
    lv_exec
    IN
    result
    USING
    lv_tab;
    DBMS_OUTPUT. Put_line (result);

    END;
    /

    Error on line 1
    ORA-06550: line 20, column 12:
    PLS-00457: expressions must be SQL types
    ORA-06550: line 15, column 8:
    PL/SQL: Statement ignored


    I am trying to evaluate the expression ': + b1: b2 + (: b3 *: b4) "which is stored in the table. This table has different expressions (expressions about 300). I want to use the bind variable in the expression because each expression evaluated thousands of time may be more in some cases. If I use bind variable can he fill pool.

    Is there a way I can pass parameters with the HELP of (IN) dynamically instead of write "help lv_tab (1), lv_tab (2), lv_tab (3), lv_tab (4)? As number of change of the input parameters depend on the expression in the table.

    If it is possible please suggest any other ideas/approaches

    Help, please...

    Published by: satnam on June 11, 2009 11:50

    Well, you keep changing faster reqs that I can follow. In any case, assuming that N-th variable bind (left to right) corresponds to n-th collection item:

    Declare
        result NUMBER;
        lv_tab values_tab := values_tab();
        lv_exp varchar2(300);
        lv_exec varchar2(300);
        lv_i number := 0;
    BEGIN
        lv_tab.extend(4);
        lv_tab(1) := 5;
        lv_tab(2) := 48;
        lv_tab(3) := 7;
        lv_tab(4) := 6;
        lv_exp := ':5000135+:5403456+(:5900111*:5200456)';
        lv_exec := lv_exp;
        While regexp_like(lv_exec,':\d+') loop
          lv_i := lv_i + 1;
          lv_exec := REGEXP_REPLACE(lv_exec,':\d+',':b(' || lv_i || ')',1,1);
        end loop;
        lv_exec := 'BEGIN :a := ' || lv_exec || '; END;';
    DBMS_OUTPUT.PUT_LINE(lv_exec);
    EXECUTE IMMEDIATE lv_exec USING OUT result,IN lv_tab;
    DBMS_OUTPUT.PUT_LINE(result);
    END;
    /
    BEGIN :a := :b(1)+:b(2)+(:b(3)*:b(4)); END;
    95
    
    PL/SQL procedure successfully completed.
    
    SQL> 
    

    SY.

  • Filtering in the table to the ADF

    Hi all

    My view object contains a Where Clause in the query:

     <DeclarativeWhereClause
        Name="DeclarativeWhereClause">
        <ViewCriteria
          Name="AccTravelAgentsViewByOwnerWhereCriteria"
          ViewObjectName="vo.AccTravelAgentsView"
          Conjunction="AND"
          Mode="3">
          <ViewCriteriaRow
            Name="AccTravelAgentsViewByOwnerWhereCriteria_row_0"
            UpperColumns="1">
            <ViewCriteriaItem
              Name="AcType"
              ViewAttribute="AcType"
              Operator="="
              Conjunction="AND"
              Value="3"
              Required="Required"/>
          </ViewCriteriaRow>
        </ViewCriteria>
      </DeclarativeWhereClause>
    

    VO data are displayed in the table read-only ADF with filtering and active sort.

    Question:

    Filtering for example by the AcCity parameter table fails with the error message: 'no value specified for parameter 2 '.

    It seems that the value literal '3' for AcType is missing from the sql query:

    <oracle.adf.model> <DCBindingContainer> <validateInputValues> <[989] DCBindingContainer:view_travel_agenciesPageDef validating at level:all> 
    <oracle.adf.model> <ViewRowSetImpl> <doSetWhereClauseParam> <[990] AccTravelAgentsView2 ViewRowSetImpl.doSetWhereClause(0, null, Beijing)> 
    <oracle.adf.model> <ViewRowSetImpl> <doSetWhereClauseParam> <[991] AccTravelAgentsView2 ViewRowSetImpl.doSetWhereClause(0, null, 3)> 
    <oracle.adf.model> <ViewRowSetImpl> <execute> <[992] AccTravelAgentsView2 ViewRowSetImpl.execute caused params to be "un"changed> 
    <oracle.adf.model> <ViewRowSetImpl> <initQueryCollection> <[993] Carrying over CappedRowCount:-1for ViewRowSet:AccTravelAgentsView2> 
    <oracle.adf.model> <QueryCollection> <createColumnList> <[994] Column count: 19> 
    <oracle.adf.model> <ViewRowSetImpl> <setWhereClauseParamsInternal> <[995] AccTravelAgentsView2 ViewRowSetImpl.setWhereClauseParams caused params changed> 
    <oracle.adf.model> <ViewRowSetImpl> <doSetWhereClauseParam> <[996] AccTravelAgentsView2 ViewRowSetImpl.doSetWhereClause(0, null, Beijing)> 
    <oracle.adf.model> <ViewRowSetImpl> <doSetWhereClauseParam> <[997] AccTravelAgentsView2 ViewRowSetImpl.doSetWhereClause(0, null, 3)> 
    <oracle.adf.model> <ViewRowSetImpl> <execute> <[998] executeQueryForCollection ViewObject:AccTravelAgentsView2, RowSet:AccTravelAgentsView2> 
    <oracle.adf.model> <ViewObjectImpl> <processViewCriteriaForRowMatch> <[999] VCs converted to RowMatch:  ( ( (UPPER(AcCity) LIKE UPPER( :vc_temp_2 || '%') ) ) )  AND ( ( (AcType = :vc_temp_1 ) ) ) > 
    <oracle.adf.model> <ViewObjectImpl> <closeStatementsResetRowSet> <[1000] ViewObject: [vo.AccTravelAgentsView]AppModule.AccTravelAgentsView2 close prepared statements...> 
    <oracle.adf.model> <ViewObjectImpl> <getPreparedStatement> <[1001] ViewObject: [vo.AccTravelAgentsView]AppModule.AccTravelAgentsView2 Created new QUERY statement> 
    <oracle.adf.model> <ViewObjectImpl> <processViewCriteriaForRowMatch> <[1002] VCs converted to RowMatch:  ( ( (UPPER(AcCity) LIKE UPPER( :vc_temp_2 || '%') ) ) )  AND ( ( (AcType = :vc_temp_1 ) ) ) > 
    <oracle.adf.model> <ViewObjectImpl> <buildQuery> <[1003] AccTravelAgentsView2>#q computed SQLStmtBufLen: 787, actual=655, storing=685> 
    <oracle.adf.model> <ViewObjectImpl> <buildQuery> <[1004] SELECT Accounts.ac_addressLine1,         Accounts.ac_addressLine2,         Accounts.ac_city,         Accounts.ac_country_id,         Accounts.ac_created_by,         Accounts.ac_created_date,         Accounts.ac_id,         Accounts.ac_modified_by,         Accounts.ac_modified_date,         Accounts.ac_name,         Accounts.ac_owner,         Accounts.ac_phone,         Accounts.ac_postalCode,         Accounts.ac_remark,         Accounts.ac_state,         Accounts.ac_status,         Accounts.ac_type FROM accounts Accounts WHERE ( ( ( (UPPER(Accounts.ac_city) LIKE UPPER( ? || '%') ) ) )  AND ( ( (Accounts.ac_type = ? ) ) ) ) ORDER BY Accounts.ac_name> 
    <oracle.adf.model> <ViewObjectImpl> <bindParametersForCollection> <[1005] Bind params for ViewObject: [vo.AccTravelAgentsView]AppModule.AccTravelAgentsView2> 
    <oracle.adf.model> <BaseSQLBuilderImpl> <bindParamValue> <[1006] Binding param 1: 3> 
    <oracle.adf.model> <ViewObjectImpl> <doFreeStatement> <[1007] ViewObject: [vo.AccTravelAgentsView]AppModule.AccTravelAgentsView2 close single-use prepared statements> 
    <oracle.adf.model> <QueryCollection> <buildResultSet> <[1008] QueryCollection.executeQuery failed...> 
    <oracle.adf.model> <QueryCollection> <buildResultSet> <[1009] java.sql.SQLException: Missing IN or OUT parameter at index:: 2
        at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2146)
    

    When I remove the Where Clause of the query, I am able to filter the table.

    Any idea what I have wrong?

    Build JDEVADF_12.1.3.0.0_GENERIC_140521.1008.S

    Thanks for the support and best regards,

    Daniel

    This "declarative" when the clause is introduced in 12 c, therefore probably buggy.

    No difference if replace you it with the good old bind variable in sql query? (uncheck "Calculate optimized query at Runtime" and manually put where clause)

    Dario

  • I have a table of the adf, I added a column that contains a button that I created, when I click it must remove this row in the table, but it is not, please help

    I have a table of the adf, I added a column that contains a button that I created, when I click it must remove this row in the table, but it is not, please help

    I don't understand. You use vo and eo for you to use business components.

    Again, this kind of code call in trouble.

    You must post the changes to make them visible to the eo find vo. You must then run the query for the changes in the business layer strips then you must update the iterator he table is based on.

    In your code I see that happen, hooch maybe because it is more often than not formatted and undocumented.

    My advice is to do a small test case that you can manage with easy sql. Once you get it to run transfer you the results to the actual application.

    Timo

  • Calling PL/SQL table...

    I have a procedure called from a package that returns all the data, the package uses a PL/SQL table that I do not know HOW to call or values that I would need to run the XXINV_PWB_HIST_FCST_PUB. XXINV_PWB_ORG_HIST_TBL (structure) with in the package, can someone tell me how it's done?

    Call package is downstairs, the record structure is less than the package call.

    DECLARE

    P_ITEM_NUMBER VARCHAR2 (200);

    DATE OF P_CURRENT_DATE;

    X_PWB_ORG_HIST_TBL APPS. XXINV_PWB_HIST_FCST_PUB. XXINV_PWB_ORG_HIST_TBL;

    BEGIN

    P_ITEM_NUMBER: = NULL;

    P_CURRENT_DATE: = NULL;

    -Modify the code to initialize the variable

    -X_PWB_ORG_HIST_TBL: = NULL;

    XXINV_PWB_HIST_FCST_PUB. () GET_ORG_DETAILS

    P_ITEM_NUMBER = > 91,

    P_CURRENT_DATE = > 2 February 2014 ",

    X_PWB_ORG_HIST_TBL = > X_PWB_ORG_HIST_TBL (which values should I put in the section)

    );

    Legacy release:

    DBMS_OUTPUT. PUT_LINE ('X_PWB_ORG_HIST_TBL =' |) X_PWB_ORG_HIST_TBL);

    -: X_PWB_ORG_HIST_TBL: = X_PWB_ORG_HIST_TBL;

    END;

    TYPE XXINV_PWB_Hist_Tbl IS TABLE OF THE XXINV_PWB_Hist_Rec

    INDEX OF DIRECTORY;

    TYPE XXINV_PWB_Org_Hist_Rec IS RECORD

    (

    Org_Hist_Index_Id NUMBER: = ".

    Item_Number Varchar2 (30): = ".

    Number of Quantity_1: = ".

    Number of Quantity_2: = ".

    Number of Quantity_3: = ".

    Number of Quantity_4: = ".

    Number of Quantity_5: = ".

    Number of Quantity_6: = ".

    Number of Quantity_7: = ".

    Number of Quantity_Total: = ".

    Date of Date_History: = ".

    Month_Year Varchar2 (15): = ".

    Number of Quantity_8: = ");

    Sorry I'm not familiar with PL/SQL tables...

    Thank you

    Help

    I can't go through your entire code. From there, you no need to use this plsql don't table as an input parameter because you do not pass anything... You're just fill with your values hard-coded... Then you can try the below stated

    DECLARE

    -declare the plsql table

    X_PWB_ORG_HIST_TBL APPS. XXINV_PWB_HIST_FCST_PUB. XXINV_PWB_ORG_HIST_TBL;

    BEGIN

    XXINV_PWB_HIST_FCST_PUB. GET_ORG_DETAILS (91, TO_DATE('02-FEB-2014','DD-MON-YYYY'), X_PWB_ORG_HIST_TBL);

    -The legacy output:

    BECAUSE me in X_PWB_ORG_HIST_TBL. FIRST... X_PWB_ORG_HIST_TBL. LAST

    LOOP

    -Add all columns to dbms_output print and test values

    DBMS_OUTPUT. PUT_LINE ('X_PWB_ORG_HIST_TBL =' |) X_PWB_ORG_HIST_TBL (i). Org_Hist_Index_Id | «, » || X_PWB_ORG_HIST_TBL (i). Item_Number);

    END LOOP;

    END;

  • SOA calling a MS SQL table to insert data.

    Hello
    I configured a XA driver to insert data into the MS SQL Server table. When I execute the stream with a SOAP user interface. I was able to insert the data from MS SQL table. But in the end, the transaction is rolled back.


    I would ask you
    < soapenv:Envelope xmlns:soapenv = 'http://schemas.xmlsoap.org/soap/envelope/' xmlns:mvn = "http://xmlns.oracle.com/MVNEIDM/MVNESelfRegistration/MVNESelfRegistration" >
    < soapenv:Header / >
    < soapenv:Body >
    < mvn:MVNESelfRegistrationRequest >
    < mvn:subscriberId > 12345 < / mvn:subscriberId >
    < mvn:Keyword > 456 < / mvn:Keyword >
    < mvn:completionDt > 2013-02-06 T 16: 24:06.952 < / mvn:completionDt >
    < mvn:expirationdt > 2013-02-06 T 16: 24:06.952 < / mvn:expirationdt >
    < / mvn:MVNESelfRegistrationRequest >
    < / soapenv:Body >
    < / soapenv:Envelope >


    Erros on SOAP UI are:

    < env:Envelope = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:env >
    < env:Header / >
    < env:Body >
    < env:Fault >
    env:Server < faultcode > < / faultcode >
    incorrect object name < faultstring > [FMWGEN] [SQLServer JDBC Driver] [SQL Server] ' dbo. SelfRegistration'. < / faultstring >
    < faultactor / >
    < detail >
    < exception / >
    < / details >
    < / env:Fault >
    < / env:Body >
    < / env:Envelope >

    The managed server log the error is


    Form weblogic server: -.
    Error committing transaction:; nested exception is: Exception [EclipseLink-4002] (Eclipse - 2.1.3.v20110304 persistence Services - r9073): org.eclipse.persistence.exceptions.DatabaseException internal Exception: weblogic.jdbc.sqlserverbase.ddc: invalid object name [FMWGEN] [SQLServer JDBC Driver] [SQL Server] ' dbo. SelfRegistration'. Error code: 208


    The process ends with an error, but why he is rolling abck the transaction at the end. The table of the object was existing in the database and I traced the table to insert the data from the input variable reception to invoke the input variable. BPEL Instance he executed until the end, but in the end, the transaction is rolled back.

    Thank you
    Newcomer Raja

    Invalid object name ' dbo. SelfRegistration'

    I'm assuming you can see a SelfRegistration table in your database... So, I guess that BOD is not the name of the diagram on the right...

  • Performance issue Bulk Insert PL/SQL table type

    Hi all

    I put in work of a batch to fill a table with a large number of data records(>3,000,000). To reduce the execution time, I used PL/SQL tables to temporarily store data that must be written to the destination table. Once all documents are piling up in the PL/SQL table I use a FORALL operator for bulk insert the records in the physical table.

    Currently, I follow two approaches to implement the process described above. (Please see the code segments below). I need to choose how to best wise performance between these two approaches. I really appreciate all the comments of experts about the runtime of the two approaches.

    (I don't see much difference in consumption of time in my test environment that has limited the data series. This process involves building a complex set of structures of large product once deployed in the production environment).


    Approach I:_
    DECLARE
    TYPE of test_type IS test_tab % ROWTYPE directory INDEX TABLE;
    test_type_ test_type.
    ins_idx_ NUMBER;
    BEGIN
    ins_idx_: = 1;
    NESTED LOOPS
    test_type_ (ins_idx_) .column1: = value1;
    test_type_ (ins_idx_) .column2: = value2;
    test_type_ (ins_idx_) .column3: = value3;
    ins_idx_: = ins_idx_ + 1;
    END LOOP;

    I_ FORALL in 1.test_type_. COUNTY
    INSERT INTO test_tab VALUES (i_) test_type_;
    END;
    /


    Approach II:_
    DECLARE
    Column1 IS a TABLE OF TYPE test_tab.column1%TYPE INDEX DIRECTORY.
    Column2 IS a TABLE OF TYPE test_tab.column2%TYPE INDEX DIRECTORY.
    Column3 IS a TABLE OF TYPE test_tab.column3%TYPE INDEX DIRECTORY.
    column1 column1_;
    column2_ Column2;
    column3_ Column3;
    ins_idx_ NUMBER;
    BEGIN
    ins_idx_: = 1;
    NESTED LOOPS
    column1_ (ins_idx_): = value1;
    column2_ (ins_idx_): = value2;
    column3_ (ins_idx_): = value3;
    ins_idx_: = ins_idx_ + 1;
    END LOOP;

    FORALL idx_ in 1.column1_. COUNTY
    INSERT
    IN n_part_cost_bucket_tab)
    Column1,
    Column2,
    Column3)
    VALUES)
    column1_ (idx_),
    column2_ (idx_),
    column3_ (idx_));
    END;
    /

    Best regards
    Lorenzo

    Published by: nipuna86 on January 3, 2013 22:23

    nipuna86 wrote:

    I put in work of a batch to fill a table with a large number of data records(>3,000,000). To reduce the execution time, I used PL/SQL tables to temporarily store data that must be written to the destination table. Once all documents are piling up in the PL/SQL table I use a FORALL operator for bulk insert the records in the physical table.

    Performance is more than just reducing the execution time.

    Just as smashing a car stops more than a car in the fastest possible time.

    If it was (breaking a car stopping all simply), then a brick with reinforced concrete wall construction, would have been the perfect way to stop all types of all sorts of speed motor vehicles.

    Only problem (well more than one actually) is that stop a vehicle in this way is bad for the car, the engine, the driver, passengers and any other content inside.

    And pushing 3 million records in a PL/SQL 'table' (btw, that is a WRONG terminology - there no PL/SQL table structure) in order to run a SQL cursor INSERT 3 million times, to reduce the execution times, is no different than using a brick wall to stop a car.

    Both approaches are pretty well imperfect. Both places an unreasonable demand on the memory of the PGA. Both are still row-by-row (aka slow-by-slow) treatment.

  • PL/SQL tables

    Hello guys,.
    I have a few questions about the PL/SQL tables

    (1) if I don't specify the 'INDEX BY' clause, they are indexed by PLS_INTEGER default, right?

    (2) consider this package specification
    CREATE OR REPLACE PACKAGE Testxyz AS
    
    TYPE tab_Numbers IS TABLE OF PLS_INTEGER;
    
    PROCEDURE TestNumber(ptab_Numbers IN tab_Numbers := NULL);
    
    
    END Testxyz;
    So I created a table (I hope it's standard indexed by type of data pls_integer) and I am in him passing as parameter to a procedure. Because I want this parameter be optional I assign null inside.

    Now, I change the table definition for:
    CREATE OR REPLACE PACKAGE Testxyz AS
    
    TYPE tab_Numbers IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
    
    PROCEDURE TestNumber(ptab_Numbers IN tab_Numbers := NULL);
    
    
    END Testxyz;
    Try to compile it and you get:
    Error (5.53): PLS-00382: expression is of the wrong type

    Why?

    (3) because I need this optional parameter, I use the first statement:
    CREATE OR REPLACE PACKAGE Testxyz AS
    
    TYPE tab_Numbers IS TABLE OF PLS_INTEGER;
    
    PROCEDURE TestNumber(ptab_Numbers IN tab_Numbers := NULL);
    
    
    END Testxyz;
    Now I create an anonymous block, and you want to set something in the table
    DECLARE
       vtab_Numbers TESTXYZ.tab_Numbers;
    BEGIN
    
       vtab_Numbers(1) := 5;
    
    
    END;
    /
    When you try to run it, I got:
    06531 00000 - 'refers to an uninitialized collection.

    Can someone help me understand this problem?
    Is it possible to have input of type PL/SQL table setting and have a standard null, are assigned?

    Thanks, Dan

    (1) if I don't specify the 'INDEX BY' clause, they are indexed by PLS_INTEGER default, right?

    N ° or somehow.

    More critical, and using official terms of [url http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/composites.htm#CHDBHJEI] documentation so that we don't get into unnecessary arguments about the correct terms for these features, it's the difference between types of ASSOCIATIVE TABLE and the IMBRIQUEE TABLE collection.

    If you omit the "INDEX BY" clause, it is a type of TABLE IMBRIQUEE collection. A type of TABLE IMBRIQUEE is always indexed by PLS_INTEGER.

    When you include the ' INDEX OF ', this is an ASSOCIATIVE ARRAY.

    (2) consider this package specification
    Try to compile it and you get:
    Error (5.53): PLS-00382: expression is of the wrong type

    Why?

    Because you cannot assign NULL to an ASSOCIATIVE ARRAY.

    In the same way, you cannot do this:

    SQL> DECLARE
      2   TYPE tab_Numbers IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
      3   v1 tab_Numbers;
      4  BEGIN
      5   v1 := NULL;
      6  END;
      7  /
     v1 := NULL;
           *
    ERROR at line 5:
    ORA-06550: line 5, column 8:
    PLS-00382: expression is of wrong type
    ORA-06550: line 5, column 2:
    PL/SQL: Statement ignored
    
    SQL> 
    

    If you want two entry points to TestNumber with an ASSOCIATIVE ARRAY or NULL then overload the procedure.

    If you want to call a procedure with a TABLE IMBRIQUE collection type you can the default empty:

    SQL> CREATE OR REPLACE PACKAGE Testxyz
      2  AS
      3   TYPE tab_Numbers IS TABLE OF PLS_INTEGER;
      4   PROCEDURE TestNumber(ptab_Numbers IN tab_Numbers DEFAULT tab_Numbers());
      5   PROCEDURE TestNumber;
      6  END Testxyz;
      7  /
    
    Package created.
    
    SQL> 
    

    (3) because I need this optional parameter, I use the first statement
    When you try to run it, I got:
    06531 00000 - 'refers to an uninitialized collection.

    Because you have not initialized it.

    Different collection types require different semantics.

    SQL> DECLARE
      2   TYPE tab_Numbers IS TABLE OF PLS_INTEGER;
      3   v1 tab_Numbers;
      4  BEGIN
      5   v1(1) := 5;
      6  END;
      7  /
    DECLARE
    *
    ERROR at line 1:
    ORA-06531: Reference to uninitialized collection
    ORA-06512: at line 5
    
    SQL> DECLARE
      2   TYPE tab_Numbers IS TABLE OF PLS_INTEGER;
      3   v1 tab_Numbers := tab_Numbers();
      4  BEGIN
      5   v1(1) := 5;
      6  END;
      7  /
    DECLARE
    *
    ERROR at line 1:
    ORA-06533: Subscript beyond count
    ORA-06512: at line 5
    
    SQL> DECLARE
      2   TYPE tab_Numbers IS TABLE OF PLS_INTEGER;
      3   v1 tab_Numbers := tab_Numbers();
      4  BEGIN
      5   v1.extend();
      6   v1(1) := 5;
      7  END;
      8  /
    
    PL/SQL procedure successfully completed.
    
    SQL> 
    
  • help join you a table nested with ordinary table

    IM creating a nested table object prtcnpt_info codelist. In a block anonymous im saying t_code as type nested table codelist.
    Now when I try to join the table nested to ordinary table oracle DB and I get the error: PL/SQL: ORA-00904: "COLUMN_VALUE": invalid identifier.
    Please help me on this and provide link tutorial about this concepts... Here is the code I wrote

    -Start code.
    create or replace type prtcnpt_info as an object (identification number
    , name varchar2 (200)
    (, code varchar2 (30));


    create type codelist is the prtcnpt_info table;


    declare
    t_code codelist.
    Start

    Select prtcnpt_info (b.pid, b.name, pt.code) in bulk collect into t_code
    party pt
    mc_code b
    where pt.cd in ("AAA", "BBB")
    and pt.ptype_id = b.pt_type_id;


    INSERT INTO table (ID
    RUN_ID
    DATA
    P_ID
    )
    SELECT id
    run_id
    data
    prtct.id-> 1
    IN table_2 t2
    , (by selecting column_value in table (t_code)) prtct
    WHERE prtct.id = t2. P_ID; -> 2

    end;

    -End code;
    also of the anonymous block
    1 = > is this right until you get the id value (b.pid) of the tablet_code nested as prtct alias?
    2 = > is this right until you reach the nested with ordinary table table? I want to join the id column in the tables.

    Published by: 914912 on April 30, 2012 02:11

    Write the insert like this and try

    insert into table
    (
           id
         , run_id
         , data
         , p_id
    )
     select id,
         run_id,
         data,
         prtct.id
       from table_2 t2
         table(t_code) prtct
      where prtct.id = t2.p_id;
    
  • collect two pl/sql table dimensions and in bulk

    Hi, I want to create a pl/sql table of two-dimensional characters. I would like to know if I can use in bulk accumulate in this case in a select statement
    can you give us examples?

    t_collection('flower) ('water') should return a value in the table after that I have bulk collect two-dimensional pl/sql table

    elmasduro wrote:
    Hi, I want to create a pl/sql table of two-dimensional characters. I would like to know if I can use in bulk accumulate in this case in a select statement
    can you give us examples?

    t_collection('flower) ('water') should return a value in the table after that I have bulk collect two-dimensional pl/sql table

    I don't think that COLLECT in BULK supports complex tables like the one descrbed you - unless you use arrays of objects. You can probably have an array of types of complex objects, but I did not do that.

    If you can not get to COLLECT it in BULK for work use nested loops to put values in the nested tables.

    If the number of items in the 'internal' table is fixed you pouvez use BULK COLLECT with an array of records.

  • Insert rows in the PL/SQl table

    Hello
    I have a PL/SQl table that I filled through bulk collect and now I'm trying to loop through the table (actually quite a few nested loops)... Now in one of my curls, I might need to insert a new row by splitting the field in the existing row in the table. Can I insert the line in the pl/sql table in the loop without affecting the "FOR i IN tab.first... Tab.Last' loop?
    Also, what would be the index of such a line inserted into the table. Can I access it with tab.last + 1 (doesn't look like it can be done if I insert into various levels of loops).
    OR
    If I insert the lines insde loops nested, then I can access the new lines as soon as I close all the loops and open a new loop? The new lines will be at the last table.

    Any help will be appreciated...

    The expression v_arr. LAST gives the index of the last entry, so you can refer to this element as

    v_arr(v_arr.LAST)
    

    Then the attributes of this element will be

    v_arr(v_arr.LAST).attr
    

    for example

    DECLARE
        TYPE table_defs_tt IS TABLE OF user_tables%ROWTYPE INDEX BY PLS_INTEGER;
        v_mytables table_defs_tt;
    BEGIN
        SELECT * BULK COLLECT INTO v_mytables
        FROM   user_tables
        WHERE  ROWNUM <= 100;
    
        DBMS_OUTPUT.PUT_LINE(v_mytables(v_mytables.LAST).table_name);
    END;
    
  • Is it possible to create a shuttle component in Oracle ADF, where the available and selected lists are tables of the adf?

    Hi all


    We use JDeveloper Studio Edition Version 12.1.3.0.0 and deployed on GlassFish Server Open Source Edition 3.1.2.2 (build 5) and connect to the SQLServer database.


    Is it possible to create a shuttle component in Oracle ADF, where the available and selected lists are tables of the adf?



    I did a POC sample on it. I can share with you. I can't put in my dropbox because dropbox is blocked in my network. Share your email. I'll send the POC through

  • Best way to apply the Format mask for the fields in a Table of the ADF

    Hi all

    12.1.3 JDev

    I would like to introduce the price data, quantity etc. fields of the ADF Table of the user interface in a specific format.

    These formats need to be dynamic, because they change according to the locale selected and sometimes they differ in the same locale.

    I tried approach converter custom but not satisfied because it is called several times when it is used in a table of the ADF and when asked that told me that this is the behavior.

    Custom converter of an attribute in a table called several times

    So, please suggest a better way to apply the format mask (which has min & max fractions, grouping, rounding) to the fields in the Table of the ADF.

    Please let me know if you need more information.

    Thank you

    B S Bilodeau.

    The second question, which I've mentioned here is the converter is called several times for each click on the table.

    This isn't a problem, this is the expected behavior (and you can't avoid it).

    Dario

Maybe you are looking for

  • Merging 2 partitions on a hard disk again on Satellite X 200-21 L

    Okmy situation: I bought the Satellite X 200-21 L (European version of the X 205-SLi3) on this point, I have two hard drives with a capacity of 160 GB per disk.But among the hard disks is divided into two partitions, the partition "C:" for progra0ms

  • Portege R100 and new hard drive

    I think to put in a larger capacity internal hard drive - 40G is now a little bit :( Does anyone do this? The traps? Any suggestions on compatible drives? TIA

  • Satellite L650 - cannot load the Win7 or power up in safe mode

    Hi all Depending on the subject, I have the laptop above. When I boot it Win 7 hangs and does not progress. If I do the same in safe mode by pressing the F8 key again the windows is not progress. I get a flash of the blue tho screen at this point, bu

  • Satellite L300 and high temperature - is this normal?

    Greetings I just bought a Toshiba Satellite L300 - 11 (Intel celeron 550), I\m kind new to laptops, and I realize it's too hot. I used the CPUID hardware monitor software, and it shows that:-ACPI THRM temperatures going as high as 63c (145f)-the proc

  • Text gradient

    I want to make a label with a gradient background. I tried to do by a gradient filled box and by using a label as a mask. But the result is empty. I thought that maybe that's a problem with the QNX label, so I tried the TextField class integrated ins