Merge possible from nested table?

I recently have started using the merge command for some of our standard 'upsert' procedures. The old design for inserts was coming from a Java web service that would send over a flat file, which in turn the Java would call an insert procedure n times while in a loop, and on each call the procedure would perform a single insert.
As you are probably already shaking your head, I realize this makes way too many database calls to be scalable and is poor design. So I now have modified the procedure to take a nested table as the input and I loop through the nested table and do all the inserts in a single procedure call. I now want to take advantage of bulk binding. I know there is the FORALL command, but I figured there was a way to do this with MERGE since the procedure does an update if a match is found instead. I didn't know if there is any syntax to do this as the oracle docs state the USING clause can be a table, view or subquery.
I am using Oracle 10gR2 and SQL Developer 3.x. This was my attempt:
CREATE TABLE merge_table
    t_id     NUMBER(9,0),
    t_desc   VARCHAR2(100)
CREATE OR REPLACE TYPE merge_type IS OBJECT
    type_id     NUMBER(9,0),
    type_desc   VARCHAR2(100)
CREATE OR REPLACE TYPE merge_list IS TABLE OF merge_type;
CREATE OR REPLACE PROCEDURE my_merge_proc(p_records IN merge_list)
AS
BEGIN
    MERGE INTO merge_table MT
    USING
        SELECT
            p_records.type_id,
            p_records.type_desc
        FROM DUAL
    ) D           
    ON
        MT.t_id = p_records.type_id
    WHEN MATCHED THEN UPDATE
    SET
        t_id   = p_records.type_id,
        t_desc = p_records.type_desc
    WHEN NOT MATCHED THEN INSERT
        t_id,
        t_desc
    VALUES
        p_records.type_id,
        p_records.type_desc
END;
show error
CLEAR SCREEN
SET SERVEROUTPUT ON
-- test script to execute procedure
DECLARE
    l_list merge_list := merge_list();
    l_size NUMBER(9,0) := 5;
BEGIN
    l_list.EXTEND(l_size);
    FOR i IN 1 .. l_size
    LOOP
        l_list(i) := merge_type(i,'desc ' || TO_CHAR(i));
    END LOOP;
    my_merge_proc(p_records => l_list);
END;
PROCEDURE my_merge_proc compiled
Warning: execution completed with warning
10/23          PLS-00302: component 'TYPE_DESC' must be declared
10/13          PL/SQL: ORA-00904: "P_RECORDS"."TYPE_DESC": invalid identifier
5/5            PL/SQL: SQL Statement ignoredI know the syntax isn't correct. How do I fix this or is it even possible to do what I am trying to do?

Ironically, after thinking about this for another 5 minutes the answer finally came to me after I had given up hope:
CREATE OR REPLACE PROCEDURE my_merge_proc(p_records IN merge_list)
AS
BEGIN
    MERGE INTO merge_table MT
    USING
        SELECT
            type_id,
            type_desc
        FROM TABLE(p_records)   -- change here
    ) R           
    ON
        MT.t_id = R.type_id
    WHEN MATCHED THEN UPDATE
    SET
        --MT.t_id   = R.type_id,  -- cannot update the same column from on clause
        MT.t_desc = R.type_desc
    WHEN NOT MATCHED THEN INSERT
        MT.t_id,
        MT.t_desc
    VALUES
        R.type_id,
        R.type_desc
END;
show error
PROCEDURE my_merge_proc compiled
No Errors.
-- I run my anonymous script block from above
anonymous block completed
select * from merge_table;
     T_ID T_DESC                                                                                            
        1 desc 1                                                                                              
        2 desc 2                                                                                              
        3 desc 3                                                                                              
        4 desc 4                                                                                              
        5 desc 5

Similar Messages

  • Obtain info from nested table in function?

    Oracle9i 9.2.0.1.0/Windows 2000
    I'd like to obtain an ID from a nested table object in order to insert it into an ID field (outside the nested table I'm getting it from). I've got a function that lets me get a foreign key ID from one other table ('objtarget'); but it isn't nested:
    CREATE FUNCTION oeln.get_obj_id(
         obj_type IN oeln.objtarget.objecttarget%type
    RETURN oeln.objtarget.obj_id%type
    IS id_type oeln.objtarget.obj_id%type;
    BEGIN
    SELECT obj_id INTO id_type
    FROM oeln.objtarget
    WHERE oeln.objtarget.objecttarget = obj_type;
    RETURN(id_type);
    END;
    SELECT obj_id
    FROM oeln.objtarget
    WHERE obj_id = get_obj_id('');
    I'm getting compilation errors on functions to obtain ID's from nested tables instead. I've got the table 'opt' (includes the fields 'opt_id' & 'optics'). The 'optics' field in opt is of type o_tab(o_ty), including the field 'optinfo'. I'd like to get the opt_id out of the opt table, from input I obtain for the optinfo field: i.e.,
    SELECT opt_id
    FROM oeln.opt
    WHERE opt_id = get_opt_id('');
    In other words, I'd like to get opt_id from the opt table like I get obj_id from the objtarget table; but instead of looking it up by objecttarget I've got to look it up by optinfo, a field in a nested table object in the opt table itself. I've only gotten compilation errors on functions in order to do this. Is this an option?
    - Noel

    select * from table(v_names);
    I guess ,here you were trying to put the content of the NT into another NT, or just trying to print it.
    But, I don't think INTO Clause is mandatory here.
    Please check your modified code (w/o INTO) and the output :
    DECLARE
       TYPE string_table IS TABLE OF VARCHAR (100);
       v_names   string_table := string_table ();
       v_test    string_table := string_table ();
    BEGIN
       v_names.EXTEND (3);
       v_names (1) := 'name1';
       v_names (2) := 'name2';
       v_names (3) := 'name3';
       DBMS_OUTPUT.put_line ('Old collection - '||v_names (1));
       DBMS_OUTPUT.put_line ('Old collection - '||v_names (2));
       DBMS_OUTPUT.put_line ('Old collection - '||v_names (3));
       DBMS_OUTPUT.put_line ('Old collection - '||v_names.COUNT ());
       DBMS_OUTPUT.put_line (CHR(10));
       /* SELECT * FROM TABLE (v_names); */
       v_test := v_names;
       DBMS_OUTPUT.put_line ('New collection -- '||v_test (1));
       DBMS_OUTPUT.put_line ('New collection -- '||v_test (2));
       DBMS_OUTPUT.put_line ('New collection -- '||v_test (3));
       DBMS_OUTPUT.put_line ('New collection -- '||v_test.COUNT ());
       DBMS_OUTPUT.put_line (CHR(10));
       /* Printing using FOR LOOP */
       FOR i IN v_test.FIRST..v_test.LAST
       LOOP
         DBMS_OUTPUT.put_line ('In FOR Loop --- '||v_test (i));
       END LOOP;
    EXCEPTION
       WHEN OTHERS
       THEN
          DBMS_OUTPUT.put_line ('Error ' ||SQLERRM|| DBMS_UTILITY.format_error_backtrace);
    END;gives o/p :
    Old collection - name1
    Old collection - name2
    Old collection - name3
    Old collection - 3
    New collection -- name1
    New collection -- name2
    New collection -- name3
    New collection -- 3
    In FOR Loop --- name1
    In FOR Loop --- name2
    In FOR Loop --- name3Refer this link -- http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/tuning.htm#CIHGGBGF
    Edited by: ranit B on Dec 26, 2012 2:29 PM
    -- code modified
    Edited by: ranit B on Dec 26, 2012 2:45 PM
    -- code 'again' updated -- FOR LOOP added

  • Value select from nested table

    CREATE TYPE test AS OBJECT (
    test1 varchar2(10),
    test2 varchar2(10));
    create or replace type test2 as table of test;
    two record are there within object type.then how i will select value from nested table.

    How many times are you going to ask this question before you either look at the response I have given to Re: how i will display type like (nestedtable or varrays or pl/sql table).?
    You have posted often enough to this forum to know the ettiquette by now.
    Regards, APC

  • Retrieve data from nested tables

    Hi All,
    I have big trouble to retrieve data from nested tables..
    From java code developer are passing struct data type to Oracle procedure.. So equal data type in oracle has been created as created as object
    CREATE OR REPLACE TYPE TXNDATA AS OBJECT
      TRAN_ID            NUMBER             ,
      EVENT_ID                   NUMBER             ,
      EVENT_CD                   VARCHAR2(10 BYTE))and create a procedure which has a IN parameter as TXNDATA
    now i need to retrieve the column data's through SELECT clause such as
    TYPE Proc_txn  IS TABLE OF  TXNJOURNALDATA;
    EVENT_JOURNAL_SEQ Proc_txn;
    select  * from table(cast(EVENT_JOURNAL_SEQ));but above SQL will give all column data's but i need to retrieve only 2 column values such as
    select EVENT_ID , EVENT_CD  from table(cast(EVENT_JOURNAL_SEQ))how can i achieve the above result set?
    Thanks & Regards
    Sami.

    use a table alias in your query
    SQL> set serveroutput on
    SQL> create TYPE TXNDATA AS OBJECT
      2  (
      3    TRAN_ID            NUMBER             ,
      4    EVENT_ID                   NUMBER             ,
      5    EVENT_CD                   VARCHAR2(10 BYTE));
      6  /
    Type created.
    SQL>
    SQL> create type txnjournaldata
      2  as table of txndata;
      3  /
    Type created.
    SQL>
    SQL> declare
      2     txn txnjournaldata := txnjournaldata (
      3                             txndata(10, 20, 'One')
      4                             ,txndata(10, 20, 'Two')
      5                           );
      6  begin
      7     for rec in (select tx.event_id
      8                       , tx.event_cd
      9                    from table (txn) tx
    10                 )
    11     loop
    12        dbms_output.put_line (rec.event_id||' - '||rec.event_cd);
    13     end loop;
    14  end;
    15  /
    20 - One
    20 - Two
    PL/SQL procedure successfully completed.Edited by: Alex Nuijten on Oct 24, 2011 12:24 PM

  • No cell merge possible with adf table?

    i know that there is no cell merge possible with adf table.
    however i read that with trinidad table it's possible.
    my table has data like this:
    d1 - tommy - 5
    d1 - tommy - 7
    d2 - burpy - 3
    d2 - burpy - 4
    d2 - tom - 7
    now i have to merge first column (dog id) where id is same -
    d1 - tommy - 5
    --- - tommy - 7
    d2 - burpy - 3
    --- - burpy - 4
    --- - tom - 7
    i am creating this dog table thru a data control on jspx page.
    can anyone suggest some help?
    or will i have to use html table for it? i really want to avoid html.
    thanks.

    Shay Shmeltzer wrote:
    Use a pivot table or a treetable
    http://jdevadf.oracle.com/adf-richclient-demo/faces/components/pivotTable.jspx
    http://jdevadf.oracle.com/adf-richclient-demo/faces/components/treeTable.jspx
    Or use inlined iterators to layout the dataonly issue with pivot table is it doesn't display header for left columns unless u take ur cursor there.
    tree table is completely different kind of view - imo.
    didn't get much help on inlined iterators - can u plz post more details on this?
    thanks.

  • Select from nested table in a nested table security problem

    please help
    running Oracle 9.2.0.3.0 on RH AS 2.1
    I can select the inner most nested table as the creator, but can't use the same select statement as USER2.
    ORA-00942: table or view does not exist
    -- begin make of objects and tables
    create or replace type mydata_t as object ( x float, y float);
    create or replace type mydata_tab_t as table of mydata_t;
    create or replace type mid_t as object (
         graphname varchar2(12),
         datapoints mydata_tab_t );
    create or replace type mid_tab_t as table of mid_t;
    create or replace type top_t as object (
         someinfo int,
         more_mid     mid_tab_t );
    create table xyz (
         xyzPK int,
         mainstuff     top_t )
         nested table mainstuff.more_mid store as mid_nt_tab
              (nested table datapoints store as mydata_nt_tab)
    -- grants
    grant all on mydata_t to user2;
    grant all on mydata_tab_t to user2;
    grant all on mid_t to user2;
    grant all on mid_tab_t to user2;
    grant all on top_t to user2;
    grant all on xyz to user2;
    -- insert
    insert into xyz values (1, top_t(22,mid_tab_t(mid_t('line1',mydata_tab_t(
    mydata_t(0,0),
    mydata_t(15,15),
    mydata_t(30,30))))));
    commit;
    -- select fails as user2
    select * from table(select Y.datapoints as DP_TAB
         from table(select X.mainstuff.more_mid as MORE_TAB
              from scott.xyz X
              where X.xyzPK=1) Y
         where Y.graphname='line1') Z;
    -- select works as user2, but i need individual lines
    select Y.datapoints as DP_TAB
         from table(select X.mainstuff.more_mid as MORE_TAB
              from scott.xyz X
              where X.xyzPK=1) Y
         where Y.graphname='line1';

    Thank you for your reply.
    I have tried
    select value(t) from table t;
    but it is still not working. I got almost the same answer as before.
    Anyway thank you very much again.
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by MARCELO OCHOA ([email protected]):
    Originally posted by meimei wu ([email protected]):
    [b]I created a nested object-relational table using REF type in oracle8i. when I tried to select * from the table, I got lots of number as the ref type values, but actually, the value in ref type should be of type varchar2 and number. The number I got looked like following code:
    JARTICLE_REF_TYPE(000022020876108427C2FE0D00E0340800208FD71F76103B99B12009C0E0340800208FD71F,
    Does anyone know how I can get the actual value that I inserted into the nested table?
    your help is appreciated.<HR></BLOCKQUOTE>
    Try this:
    select value(t) from table t;
    Best regards, Marcelo.
    null

  • Select from nested table

    Hi,
    I create following types and table:
    CREATE OR REPLACE TYPE obj_query AS OBJECT
    (emp_id NUMBER(6)
    ,emp_first VARCHAR2(20)
    ,emp_last VARCHAR2(25));
    CREATE OR REPLACE TYPE tab_query AS TABLE OF obj_query;
    CREATE TABLE queryEmp
    (id_row NUMBER
    ,beginTrans VARCHAR2(15)
    ,queryA VARCHAR2(100)
    ,resultEmp tab_query)
    NESTED TABLE resultEmp
    STORE AS nested_queryEmp;
    I would like the output of the table queryEmp like this:
    id_row beginTrans queryA emp_id emp_first emp_last
    1 15:00 Select1 100 Joe King
    101 John Queen
    2 15:10 Select2 100 Leo King
    101 Mett Queen
    But Can I get this result with only SQL SELECT statement from this table?
    I don't want to use PL/SQL, only SELECT in SQL*Plus.
    Thank you
    I'm sorry but output looks so bad.
    So, I want to get the one row of id_row, beginTrans, queryA and all rows of nested table dmlStats to this "main" row and so on.
    But not in PL/SQL
    I hope, you understand me.
    Thanks
    Edited by: user9357436 on 2.11.2011 5:18
    Edited by: user9357436 on 2.11.2011 5:25

    Arvind Ayengar wrote:
    Can you please explain things in details, and just ensure you are in the correct forum.Is this reply directed at me or the OP?

  • Deletin of rows from nested table(urgent)

    hi
    gurus
    i have a table x having of two nested tables
    1)table1 and 2) table 2
    how to delete the perticular rows from the table2
    if any body having with example that is more helpfull to me
    pls help me in this issue

    http://asktom.oracle.com/pls/ask/f?p=4950:8:4908238426441699577::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:2010064718579,

  • Union all-distinct and remove duplicates from nested table?

    Hi all,
    I need a select that will bulk collect some data in my nested table.
    I have two tables from which I need to select all the accounts only once.(remove duplicates).
    Tried to search on the forum...but no luck.
    I have a table with one column:
    create table a1(account_no number);
    and a second table with 3 columns.
    create table a2 (account_no number, name number, desc varchar2 (100));
    I have a nested table like:
    table of a2%rowtype;
    Can I select from this two table in one select and put in my nested table just one row per account?
    if a I have in a 2a row like :
    1 'test' 'test2'
    2 aaaa aa
    and in a1 a row like:
    1
    I want to put in my nested table just (1, null,null and 2,aaaa, aa)) or (1,test,test2 and 2,aaaa, aa). it does no matter what row from those two I insert.
    Second question:
    If I use:
    BANNER
    Oracle9i Release 9.2.0.5.0 - Production
    PL/SQL Release 9.2.0.5.0 - Production
    CORE     9.2.0.6.0     Production
    TNS for 32-bit Windows: Version 9.2.0.5.0 - Production
    NLSRTL Version 9.2.0.5.0 - Production
    SQL>
    what is the best solution to remove duplicates from a neste table like mine?
    I thought that I can build another nested table and loop in my first nt and for each row I check in there was the same account in previous lines.
    it will be like:
    for i in 1....nt_first.count loop
    for j in 1..i loop
        --check if my line was in previous lines. if it was...do not move it in my second collection
    end loop;it is this best option in oracle 9i?

    I have a table with one column:
    create table a1(account_no number);
    and a second table with 3 columns.
    create table a2 (account_no number, name number, desc varchar2 (100));
    all I need are the accounts. the rest ar extra data
    that I can ignore in this step. But if it is
    available, it is ok to use it.
    using one select in this case is is much better that
    trying to remove duplicates parsing some nested table
    with FOR many times?
    Thankshi,
    try to use union. Union automatically removes duplicates between two or more tables.
    with t1 AS
           (select '3300000' account_no FROM DUAL UNION
            select '6500000' account_no FROM DUAL union
            select '6500000' account_no FROM DUAL union
            select '6500000' account_no FROM DUAL union
            select '6500000' account_no FROM DUAL
           select * from t1ACCOUNT_NO
    3300000
    6500000

  • Taking more time for retreving data from nested table

    Hi
    we have two databases db1 and db2,in database db2 we have number of nested tables were there.
    Now the problem is we had link between two databases,whenever u firing the any query in db1 internally it's going to acces nested tables in db2.
    For feching records it's going to take much more time even records are less in table . what would be the reason.
    plz help me daliy we are facing the problem regarding the same

    Please avoid duplicate thread :
    quaries taking more time
    Nicolas.
    +< mod. action : thread locked>+

  • Return Minimum from Nested Table and Include

    Hello -
    Complete noob to the SQL world but trying :)
    I know I can do this in multiple tables, but trying to do it all in one pull...I have data that is counting the number of employees by ID number across several years....(2011 - 2014) - I am using a nested Query to get my origin info, and trying to replicate
    the minimum initial year across each row in the return......
    I am returning minimum per year found, when what I want is minimum across all years for each account
    My data looks as such :
    Initial   
    YR
    candidate_account_num
    segment
    sector
    subsector
    NumEngage
    2011
    2011     
    000001987
    MM
    West  
                             1
    2012
    2012
    000001987
    MM
    West  
                             6
    2013
    2013
    000001987
    MM
    West  
                             1
    What I want it to show is :
    Initial   
    YR
    candidate_account_num
    segment
    sector
    subsector
    NumEngage
    2011
    2011     
    000001987
    MM
    West  
                             1
    2011
    2012
    000001987
    MM
    West  
                             6
    2011
    2013
    000001987
    MM
    West  
                             1
    2011 is the lowest year for that account num of the three instances....
    Thanks so much for any insight....
    Select
    min
    (A.YR)
    as Initial
    ,A.YR
    ,A.candidate_account_num
    ,A.segment
    ,A.sector
    ,A.subsector
    ,A.NumEngage
    From
    (select
    year(producing_date)
    as YR
    ,candidate_account_num
    ,segment
    ,sector
    ,subsector
    ,count(soy_id_nr)
    as NumEngage
    from csinternalstaging.dbo.tmp_Producingsolutions
    where producing_date
    >='1/1/2011'
    and segment not
    in ('INTL')
    group by
    year(producing_date)
    ,candidate_account_num
    ,segment
    ,sector
    ,subsector
    A
    group
    by
    YR
    ,candidate_account_num
    ,segment
    ,sector
    ,subsector
    ,NumEngage
    order by
    candidate_account_num,
    yr

    select
           Min(year(producing_date)) OVER(PARTITION
    BYcandidate_account_num,
    segment, sector,
    subsector) as
    Initial
               ,year(producing_date)asYR
    ,candidate_account_num
    ,segment
    ,sector
    ,subsector
    ,count(soy_id_nr)
    as NumEngage
    from csinternalstaging.dbo.tmp_Producingsolutions
    where producing_date
    >='1/1/2011'
    and segment not
    in ('INTL')
    group by
    year(producing_date)
    ,candidate_account_num
    ,segment
    ,sector
    ,subsector

  • SSAS Tabular - Merge data from two tables to one

    Hi,
    I have two ReportServer databases in two different instances of SQL Server. I want to extract the ExecutionLog3 data to a Tabular model. Now, I have two separate tables in Tabular with duplicated measures but I want to have the data from two ReportServer in
    the same table.
    Any idea?
    Regards.

    Hi Numero4,
    According to your description, there are two Reporting Services databases, and you want to merge the data in a tabular model, right? 
    As per my understanding, you can create a link server on one of the server, and then merge the data in database lever other than in tabular mode. In this case, import the merged data into the tabular model. Here are some useful links for you reference.
    http://msdn.microsoft.com/en-IN/library/ff772782.aspx
    http://support.flexquarters.com/esupport/index.php?/Default/Knowledgebase/Article/View/2458/52/how-to-create-link-server-with-ms-sql-200520082012-64-bit-using-qodbcqremote
    Regards,
    Charlie Liao
    TechNet Community Support

  • Error while selecting  from nested table in PL/SQL block ............

    SQL> create type string_table is table of varchar(100);
    2 /
    Type created.
    declare
    v_names string_table := string_table();
    begin
    v_names.EXTEND(3);
    v_names(1) := 'name1';
    v_names(2) := 'name2';
    v_names(3) := 'name3';
    dbms_output.put_line(v_names(1));
    dbms_output.put_line(v_names(2));
    dbms_output.put_line(v_names(3));
    dbms_output.put_line(v_names.COUNT());
    select * from table(v_names);
    end;
    select * from table(v_names);
    ERROR at line 12:
    ORA-06550: line 12, column 7:
    PLS-00428: an INTO clause is expected in this SELECT statement

    select * from table(v_names);
    I guess ,here you were trying to put the content of the NT into another NT, or just trying to print it.
    But, I don't think INTO Clause is mandatory here.
    Please check your modified code (w/o INTO) and the output :
    DECLARE
       TYPE string_table IS TABLE OF VARCHAR (100);
       v_names   string_table := string_table ();
       v_test    string_table := string_table ();
    BEGIN
       v_names.EXTEND (3);
       v_names (1) := 'name1';
       v_names (2) := 'name2';
       v_names (3) := 'name3';
       DBMS_OUTPUT.put_line ('Old collection - '||v_names (1));
       DBMS_OUTPUT.put_line ('Old collection - '||v_names (2));
       DBMS_OUTPUT.put_line ('Old collection - '||v_names (3));
       DBMS_OUTPUT.put_line ('Old collection - '||v_names.COUNT ());
       DBMS_OUTPUT.put_line (CHR(10));
       /* SELECT * FROM TABLE (v_names); */
       v_test := v_names;
       DBMS_OUTPUT.put_line ('New collection -- '||v_test (1));
       DBMS_OUTPUT.put_line ('New collection -- '||v_test (2));
       DBMS_OUTPUT.put_line ('New collection -- '||v_test (3));
       DBMS_OUTPUT.put_line ('New collection -- '||v_test.COUNT ());
       DBMS_OUTPUT.put_line (CHR(10));
       /* Printing using FOR LOOP */
       FOR i IN v_test.FIRST..v_test.LAST
       LOOP
         DBMS_OUTPUT.put_line ('In FOR Loop --- '||v_test (i));
       END LOOP;
    EXCEPTION
       WHEN OTHERS
       THEN
          DBMS_OUTPUT.put_line ('Error ' ||SQLERRM|| DBMS_UTILITY.format_error_backtrace);
    END;gives o/p :
    Old collection - name1
    Old collection - name2
    Old collection - name3
    Old collection - 3
    New collection -- name1
    New collection -- name2
    New collection -- name3
    New collection -- 3
    In FOR Loop --- name1
    In FOR Loop --- name2
    In FOR Loop --- name3Refer this link -- http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/tuning.htm#CIHGGBGF
    Edited by: ranit B on Dec 26, 2012 2:29 PM
    -- code modified
    Edited by: ranit B on Dec 26, 2012 2:45 PM
    -- code 'again' updated -- FOR LOOP added

  • Help needed to merge values from two tables -

    We have these three test tables shown, which have a common ID; And amount fields; I want the -------
    test1.val = test2.val + test3.val
    when they have common ids in them;
    I have shown the test data below: And the expected output;
    NOTE: In database with real table values - each of them have millions of rows in them. So effeciency is very important here;
    SQL> desc test1;
    Name Null? Type
    ID NUMBER
    VAL NUMBER
    SQL> desc test2;
    Name Null? Type
    ID NUMBER
    VAL NUMBER
    SQL> desc test3;
    Name Null? Type
    ID NUMBER
    VAL NUMBER
    SQL> select * from test1;
    ID VAL
    1 50
    2 50
    3 55
    4 60
    5 20
    5 rows selected.
    SQL> select * from test2;
    ID VAL
    1 25
    1 25
    2 5
    2 5
    4 75
    5 rows selected.
    SQL> select * from test3;
    ID VAL
    1 25
    1 25
    2 5
    2 25
    2 25
    5 10
    6 rows selected.
    I EXPECT the output to be:
    SQL> select * from test1;
    ID VAL
    1 100
    2 65
    3 20
    4 75
    3 20
    5 10
    6 rows selected.

    Need help with the update queries - joining three tables -

  • Possible bug? Nested tables and quantity fields in the nested table.

    Hey guys,
    I have witnessed a weird bug, maybe someone can clarify this for me.
    1. Create a nested table. The inner table contains a quantity field of type DZIEME (FROM VBAP-ZIEME).
    2. Create your interface and just put this table in the import section. Try to activate. It will work.
    3. Create an adobe form for it and a program and execute it. You'll get a short dump saying that VBAP-ZIEME is unknown and that there are errors in the dynamically generated function.
    Second test.
    1. Create a nested table. The outer table contains a quantity field of type DZIEME (FROM VBAP-ZIEME).
    2. Create your interface and just put this table in the import section. Try to activate. It will NOT work.
    You have to make the addition of the quantity fields in Currency/Quantity Fields.
    From this I see that the checker, doesn't look into nested tables for quantity/currency fields and just activates the interface.
    Third test
    1. Create a nested table. The inner table contains a quantity field of type DZIEME (FROM VBAP-ZIEME).
    2. Create your interface:
    2.a. Put this table in the import section.
    2.b. Declare the nested Quantity field in the Currency/Quantity Fields section, using the autofiller (the buttons to the right of the field)
    2.c Try to activate. It will work.
    3. Create an adobe form for it and a program and execute it. You'll get a short dump which for some reason has no info.
    From this, I understand that the Currency/Quantity Fields section may not declare the quantity fields, from nested tables, correctly.
    What do you guys think? What am I doing wrong?
    Thanks,

    @Anne Kathrine P...
    By nested tables I mean creating table types, in the dictionary (se11) then in the interface>Import section adding a parameter X TYPE B_T.
    i.e.
    Structure A
    Table type of structure A, A_T
    Structure B containing a field of table type A
    Table type B of structure B, B_T.
    The issue can be easily solved for Z tables by changing the component type from quantity to decimal type.

Maybe you are looking for