Alias for Cursor ROWS  in DBMS_XMLGEN

Gurus,
I have following sample function to generate XML content
==========================================
create or replace function getxmldata
return clob is
mysql DBMS_XMLGEN.ctxHandle;
begin
mysql := DBMS_XMLGEN.newContext('
select cursor(select item_id as "@Item_Id",has_metal,has_stone from pid_item where item_id in (17)) as "ItemHeader"
from dual
dbms_xmlgen.setrowsettag(mysql,'ROOT');
dbms_xmlgen.setrowtag(mysql,null);
return(DBMS_XMLGEN.getXML(mysql));
end;
=======================================
When i call this function as "select getxmldata from dual". I do get following output
=======================================
<?xml version="1.0"?>
<ROOT>
<ItemHeader>
<ItemHeader_ROW Item_Id = "17">
<HAS_METAL>N</HAS_METAL>
<HAS_STONE>N</HAS_STONE>
</ItemHeader_ROW>
</ItemHeader>
</ROOT>
=======================================
I want to have Item as Tag name instead of "ItemHeader_ROW" . Can you please let me know how can get this??
Thanks
srinivas.L

Like this perhaps?
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
set long 10000
create or replace function getxmldata
return clob is
  mysql DBMS_XMLGEN.ctxHandle;
begin
mysql := DBMS_XMLGEN.newContext(
  'select cursor(select * from dual) as "ItemHeader" from dual');
dbms_xmlgen.setrowsettag(mysql,'ROOT');
dbms_xmlgen.setrowtag(mysql,null);
return
( replace
  ( DBMS_XMLGEN.getXML(mysql)
  , 'ItemHeader_ROW>'
  , 'Item>'
end;
Function created.
show errors
No errors.
select getxmldata from dual ;
GETXMLDATA
<?xml version="1.0"?>
<ROOT>
<ItemHeader>
  <Item>
   <DUMMY>X</DUMMY>
  </Item>
</ItemHeader>
</ROOT>--
Joe Fuda
SQL Snippets

Similar Messages

  • Ref Cursor: trip to DB for every row?

    If I return a ref cursor from a stored procedure to my java program, when I select the rows from the result set, does it go back to the db for every row, or are all result set rows downloaded at once when the result set is opened? Thanks.

    Neither. :)
    This likely works the same way as when you open a normal cursor: depending on the prefetch value (or -in JDBC 2.0/SQLJ parlance- the fetch limit) you'll fetch up to so many rows at a time. If you do not say anything, an Oracle JDBC (or SQLJ) driver will fetch up to ten rows at a time, though you can adjust that setting to your liking.

  • Column alias for spatial column within cursor loop using dynamic SQL

    The following PL/SQL is trying to generate an error report for records or objects which are 3 dimensional or above. I have no issue execute one statement in SQLPLUS but I need to use the column alias for the spatial column. But, it is a different story using PL/SQL and dynamic SQL Any help will be great because I've been working on this for than 8 hours but with no luck! Thanks.
    Here is the error I'm getting,
    stmt := 'select p.column_name.get_gtype(), id from '|| table_name p ' where p.column_name.get_gtype() > 2 ';
    ERROR at line 15:
    ORA-06550: line 15, column 79:
    PLS-00103: Encountered the symbol "P" when expecting one of the following:
    . ( * @ % & = - + ; < / > at in is mod remainder not rem
    <an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_
    LIKE4_ LIKEC_ between || member SUBMULTISET_
    The symbol "* was inserted before "P" to continue.
    and my PL/SQL is,
    set serveroutput on size 100000 feedback off
    declare
    rs integer;
    rs1 integer;
    cur integer;
    rp integer;
    trs integer;
    n integer;
    un varchar2(30);
    stmt varchar2(200);
    begin
    dbms_output.put_line(rpad('Table Name',40)||' Dimension');
    dbms_output.put_line(rpad('-',53,'-'));
    cur:= dbms_sql.open_cursor;
    for t in (select column_name,table_name from user_sdo_geom_metadata where regexp_like(table_name, '[^[A-B]_[AB]$'))
    loop
    stmt := 'select p.column_name.get_gtype(), id from '|| table_name p ' where p.column_name.get_gtype() > 2 ';
    dbms_sql.parse(cur, stmt, dbms_sql.native);
    dbms_sql.define_column(cur, 1, rs);
    dbms_sql.define_column(cur, 2, rs1);
    rp:= dbms_sql.execute(cur);
    n:=dbms_sql.fetch_rows(cur);
    dbms_sql.column_value(cur, 1, rs);
    dbms_sql.column_value(cur, 2, rs1);
    dbms_output.put_line(rpad(t.table_name,38,'.')||rpad(rs,15)||rpad(rs1,15));
    end loop;
    dbms_sql.close_cursor(cur);
    dbms_output.put_line(rpad('-',53,'-'));
    end;
    set serveroutput off feedback on feedback 6

    The following PL/SQL is trying to generate an error report for records or objects which are 3 dimensional or above. I have no issue execute one statement in SQLPLUS but I need to use the column alias for the spatial column. But, it is a different story using PL/SQL and dynamic SQL Any help will be great because I've been working on this for than 8 hours but with no luck! Thanks.
    Here is the error I'm getting,
    stmt := 'select p.column_name.get_gtype(), id from '|| table_name p ' where p.column_name.get_gtype() > 2 ';
    ERROR at line 15:
    ORA-06550: line 15, column 79:
    PLS-00103: Encountered the symbol "P" when expecting one of the following:
    . ( * @ % & = - + ; < / > at in is mod remainder not rem
    <an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_
    LIKE4_ LIKEC_ between || member SUBMULTISET_
    The symbol "* was inserted before "P" to continue.
    and my PL/SQL is,
    set serveroutput on size 100000 feedback off
    declare
    rs integer;
    rs1 integer;
    cur integer;
    rp integer;
    trs integer;
    n integer;
    un varchar2(30);
    stmt varchar2(200);
    begin
    dbms_output.put_line(rpad('Table Name',40)||' Dimension');
    dbms_output.put_line(rpad('-',53,'-'));
    cur:= dbms_sql.open_cursor;
    for t in (select column_name,table_name from user_sdo_geom_metadata where regexp_like(table_name, '[^[A-B]_[AB]$'))
    loop
    stmt := 'select p.column_name.get_gtype(), id from '|| table_name p ' where p.column_name.get_gtype() > 2 ';
    dbms_sql.parse(cur, stmt, dbms_sql.native);
    dbms_sql.define_column(cur, 1, rs);
    dbms_sql.define_column(cur, 2, rs1);
    rp:= dbms_sql.execute(cur);
    n:=dbms_sql.fetch_rows(cur);
    dbms_sql.column_value(cur, 1, rs);
    dbms_sql.column_value(cur, 2, rs1);
    dbms_output.put_line(rpad(t.table_name,38,'.')||rpad(rs,15)||rpad(rs1,15));
    end loop;
    dbms_sql.close_cursor(cur);
    dbms_output.put_line(rpad('-',53,'-'));
    end;
    set serveroutput off feedback on feedback 6

  • How to check with table for cursor..?

    How to check with table for cursor..?
    Here I have Table temp_final_plan
    Here i want to update if already exit...below is the procedure....
    CREATE OR REPLACE PROCEDURE spu_final_profit_plan
    AS
    -- Constant declarations
      ln_errnum number := 0;
    -- Variable declarations
       ls_errmsg app_errors.err_msg%TYPE;
       ls_appmsg app_errors.app_msg%TYPE;
       ls_appid  app_errors.app_id%TYPE;
    -- Cursor declaration for final_update_el
    CURSOR cur_final_update_el IS
        select '910' ent,
               '9127316' center,
               post_acct,
               sum(avg_mtd_01) sum_avg_mtd_01,
               sum(avg_mtd_02) sum_avg_mtd_02,
               sum(avg_ytd_01) sum_avg_ytd_01,
               sum(avg_ytd_02) sum_avg_ytd_02
          from mon_act_cypy
         where rec_type = 'A'
           and sum_flag = 'D'
           and yr = '2008'
           and substr(ctr_or_hier, 1, 2) = 'el'
           and ent || sub_ent in
               (select ent || sub_ent
                  from ent_ref
                 where roll_ent || roll_sub_ent = '999100')
         group by post_acct
        having sum(avg_mtd_01) <> 0
            or sum(avg_mtd_02) <> 0
            or sum(avg_ytd_01) <> 0
            or sum(avg_ytd_02) <> 0;
    -- Cursor declaration for final_update
    CURSOR cur_final_update IS
        select b.plan_ent b_plan_ent,
               b.plan_ctr b_plan_ctr,
               a.post_acct a_post_acct,
               sum(a.avg_mtd_01) sum_avg_mtd_01,
               sum(a.avg_mtd_02) sum_avg_mtd_02,
               sum(a.avg_ytd_01) sum_ytd_mtd_01,
               sum(a.avg_ytd_02) sum_ytd_mtd_02
          from mon_act_cypy a,
               plan_unit_tbl b
         where a.ent || a.ctr_or_hier = b.ent || b.ctr_or_hier
           and a.rec_type = 'A'
           and a.sum_flag = 'D'
           and a.yr = '2008'
           and b.hier_tbl_num = '001'
           and a.ent || a.sub_ent in
               (select ent || sub_ent
                  from ent_ref
                 where roll_ent || roll_sub_ent = '999100')
         group by b.plan_ent, b.plan_ctr, a.post_acct
        having sum(a.avg_mtd_01) <> 0
            or sum(a.avg_mtd_02) <> 0
            or sum(a.avg_ytd_01) <> 0
            or sum(a.avg_ytd_02) <> 0;
    -- Begin the procedure body
       BEGIN
    -- Insert / Update final profit plan for final_update query using cursor
       FOR rec_final_update_el IN cur_final_update_el
       LOOP
       EXIT WHEN rec_final_update_el%NOTFOUND;
       IF rec_final_update_el. THEN
          UPDATE temp_final_plan
             SET sum_avg_mtd_01 = rec_final_update_el.sum_avg_mtd_01,
                 sum_avg_mtd_02 = rec_final_update_el.sum_avg_mtd_02,       
                 sum_avg_ytd_01 = rec_final_update_el.sum_avg_ytd_01,       
                 sum_avg_ytd_02 = rec_final_update_el.sum_avg_ytd_02,       
           WHERE ent = rec_final_update_el.ent
             AND center = rec_final_update_el.center
             AND post_acct = rec_final_update_el.post_acct;
       ELSE
          INSERT INTO temp_final_plan VALUES(rec_final_update_el.ent,
                                             rec_final_update_el.center,
                                             rec_final_update_el.post_acct,
                                             rec_final_update_el.sum_avg_mtd_01,
                                             rec_final_update_el.sum_avg_mtd_02,
                                             rec_final_update_el.sum_avg_ytd_01,
                                             rec_final_update_el.sum_avg_ytd_02);
       END IF;
       END LOOP;
    -- Insert / Update final profit plan for final_update query using cursor
       FOR rec_final_update IN cur_final_update
       LOOP
       EXIT WHEN rec_final_update%NOTFOUND;
       IF rec_final_update. THEN
          UPDATE temp_final_plan
             SET sum_avg_mtd_01 = rec_final_update.sum_avg_mtd_01,
                 sum_avg_mtd_02 = rec_final_update.sum_avg_mtd_02,       
                 sum_avg_ytd_01 = rec_final_update.sum_avg_ytd_01,       
                 sum_avg_ytd_02 = rec_final_update.sum_avg_ytd_02,       
           WHERE ent = rec_final_update.b_plan_ent
             AND center = rec_final_update.b_plan_ctr
             AND post_acct = rec_final_update.a_post_acct;
       ELSE
          INSERT INTO temp_final_plan VALUES(rec_final_update.b_plan_ent,
                                             rec_final_update.b_plan_ctr,
                                             rec_final_update.a_post_acct,
                                             rec_final_update.sum_avg_mtd_01,
                                             rec_final_update.sum_avg_mtd_02,
                                             rec_final_update.sum_avg_ytd_01,
                                             rec_final_update.sum_avg_ytd_02);
       END IF;
       END LOOP;
    -- EXCEPTION handling section
       EXCEPTION
    -- Fire OTHERS Exception case by default
       WHEN OTHERS THEN
    -- ROLL BACK Transaction, if any failure
       ROLLBACK;
       ln_errnum := SQLCODE;
       ls_errmsg := SUBSTR(SQLERRM, 1, 100);
    -- Log the ERRORS into APP_ERRORS table using SPU_LOG_ERRORS procedure
       spu_log_errors(ln_errnum, ls_errmsg, ls_appid, ls_appmsg);
    -- End of the stored procedure
    END spu_final_profit_plan;
    [\pre]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    I'm not sure what you mean by, 'How to check with table for cursor..?' but I'll offer a comment on your Code Snippet. I think you want to know how to check if a record exists so you know if you need to perform an INSERT or an UPDATE.
    Here is a snippet of your code. I'll put my comments in "Comment" style in your code.
    -- Insert / Update final profit plan for final_update query using cursor
       FOR rec_final_update_el IN cur_final_update_el
       LOOP
    /* There is no need to test for %NOTFOUND since you are using Cursor FOR Loop! 
    ** This construct automatically exits when the last record is processed. */
       EXIT WHEN rec_final_update_el%NOTFOUND;
    /* Is this where you would like to know how to Check if the record already exist??
    ** I asked this because, 'rec_final_update_el.' is not valid syntax.  Are you looking for
    ** an Cursor Attribute or Method you can check here? 
    ** I would suggest a Primary Key or Unique Index on ENT, CENTER, and POST_ACCT
    ** on the TEMP_FINAL_PLAN table. Then simply perform an INSERT and code an
    ** Exception to UPDATE when you get a DUP_VAL_ON_INDEX exception.  Otherwise,
    ** you will need to simply run an Implicit or Explicit Cursor to test if the row exists and
    ** use this return value to determine if you should INSERT or UPDATE.  */
       IF rec_final_update_el. THEN
          UPDATE temp_final_plan
             SET sum_avg_mtd_01 = rec_final_update_el.sum_avg_mtd_01,
                 sum_avg_mtd_02 = rec_final_update_el.sum_avg_mtd_02,       
                 sum_avg_ytd_01 = rec_final_update_el.sum_avg_ytd_01,       
                 sum_avg_ytd_02 = rec_final_update_el.sum_avg_ytd_02,       
           WHERE ent = rec_final_update_el.ent
             AND center = rec_final_update_el.center
             AND post_acct = rec_final_update_el.post_acct;
       ELSE
          INSERT INTO temp_final_plan VALUES(rec_final_update_el.ent,
                                             rec_final_update_el.center,
                                             rec_final_update_el.post_acct,
                                             rec_final_update_el.sum_avg_mtd_01,
                                             rec_final_update_el.sum_avg_mtd_02,
                                             rec_final_update_el.sum_avg_ytd_01,
                                             rec_final_update_el.sum_avg_ytd_02);
       END IF;
       END LOOP;I hope I've answered your question, but if I haven't please provide more details so we can better understand your request.
    Craig...

  • Alternative for Cursor in SQL Server 2012

    Hi all,
      I keen to know Alternative for Cursor in SQL Server 2012. Why everyone telling Cursor have performance impact. Any other alternative for row by row comparison like Array in SQL 2012 ?
    Thanks

    It is not the cursor that kills you - it is the loop as such. I've seen more than one example of a poor man's cursor, where they have selected TOP 1 from a #temp ORDER BY, and several operations on the temp table - which is completely void of indexes,
    making the operations for the loop control the slowest in the batch. So you use cursor when you need to iterate.
    But in many cases, you should work and think set-based instead.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Howto set tool tip for a row in JTable

    I want to set a seperate tool tip for each of the rows in JTable. I tried getting cell renderer of all columns in a row and then setting tool tip for them. I expected that setting tool tip for a cell renderer will set tool tip for that cell. Thus setting tool tip for all the cells in a row will indirectly set tool tip for that row. But it does not happen that way. By setting a tool tip for a renderer it will use that tool tip for all those cells which use that renderer.
    Is there any problem in my approach or we cannot do this in Java.
    regards.

    Thanks.You're wellcome.
    >
    I just saw this method in JComponent and realized this
    solution.
    But then thought that for doing this i'll have to
    create my JTable class for just overiding one method
    thereby increasing one more level of abstraction.Well, you could override the method in an inner class if I understand you correctly in assuming that you don't want to create a JTable as new separate class. You could do this:
    JTable yourtable = new JTable() {
      public String getToolTipText( MouseEvent e ) {
        return getToolTipForRow( rowAtPoint( e.getPoint() ));
    // some where else in your class
    getToolTipForRow( int row ) {
      // determine your tooltip here
    }I think this would be a bit nicer and slightly faster approach because as far as I understand the getToolTipText() method is called after a similar MouseEvent for every JComponent i.e. a small pause of cursor movement over the component in question. I admit that I haven't tested either approach myself but noticed that JTable actually overrides the getToolTipText( MouseEvent e) method already. In your code you determine and set the tooltip every time the mouse moves. If you override getToolTipText( MouseEvent e) you have to determine the tooltip text only when the tooltip is actually about to be shown.
    Regards, JMorko

  • Partial locking for a row

    Hello,
    For example, I have two queries, the first one just accesses
    the first entry of the row. And the second one just accesses the
    second entry of the row.
    Is there any locking method ? Such that I can lock the first
    entry of the row when I use the first query and lock the second
    entry of the row when I use the second query. So that I can
    speed up the performance of my system in this way.
    null

    If you're trying to lock on a per-column basis, you won't be able
    to, since locks are granular to a per-row basis, not below.
    If you want to lock a specific row on a table, you may use a
    2-phase commit method like so:
    EXEC SQL
    SELECT A.ROWID, B.ROWID, <rest of rowid's>, <rest of data>
    INTO :blabla, :blabla,.....
    FROM TEST_TABLE_1 A, TEST_TABLE_2 B, <rest of tables>
    WHERE <where clause w/joins, etc...>
    FOR UPDATE;
    This will acquire row-locks on all tables referenced, for all
    rows fetched by the SELECT.
    This lock will be released when you close the current transaction
    with a COMMIT or a ROLLBACK (or, if using from within a cursor,
    when the cursor is closed if your configuration is set this way).
    That means that you would:
    1) Acquire the locks on all the rows
    2) Do all your work using the ROWID's to locate the rows to query
    or manipulate (while they're locked)
    3) Commit or rollback
    This will allow you to use row-level locks, which increases
    concurrency and makes the SQL code a lot faster (because of the
    use of rowid's).
    I've found that the best method to do this is to use a cursor,
    and then work on that cursor's fetches using the ROWID's (NOT the
    WHERE CURRENT OF CLAUSE when there is more than one table
    involved in the lock mechanism).
    Best
    Diego
    Stephen Lee (guest) wrote:
    : Hello,
    : For example, I have two queries, the first one just
    accesses
    : the first entry of the row. And the second one just accesses
    the
    : second entry of the row.
    : Is there any locking method ? Such that I can lock the
    first
    : entry of the row when I use the first query and lock the second
    : entry of the row when I use the second query. So that I can
    : speed up the performance of my system in this way.
    null

  • Raise expection for each row if returned set contains x

    Hello Guys,
    I have the following code and almost gave up on the idea to raise an exception and print
    a line for each row where the sales price is < 10. I know how this works with a CURSOR but I want to try it without it. Thinking about it let me to the conclusion that this is not possible to act on individual row results on a set based operation. I will have to use a CURSOR (not set based so I can look at each row).
    Am I thinking correctly?
    (Code example deleted due to confusion)
    Code example deleted due to confusion
    Edited by: metalray on 10.11.2010 01:07

    Hi 3360,
    I am using PL/SQL. I can make my point without any code.
    The question, in a different format is this:
    Can I throw an whatever exception (or dbms_output put line) for individual rows WITHOUT using a cursor.
    My answer (and I just need clarification on this):
    *(1)* No, because anything apart from a cursor is set-based and set-based operations (select, join, union)
    can not through exceptions on individual rows.
    *(2)* Yes, you can have a DBMS_OUTPUT.PUT_LINE with whatever exception on a set based operation
    for each individual row that causes the exception (I dont think this answer is true :)
    @Agustin UN, thanks for that. I know that is possible :) The problem is,
    that I dont think I can print or fetch each individual row that causes the "exception" since
    it is treated as a set. - I am welcome for someone to tell me that it work nevertheless

  • ORA-01423: error encountered while checking for extra rows in exact fetch

    ERROR at line 1:
    ORA-01423: error encountered while checking for extra rows in exact fetch
    ORA-01722: invalid number
    ORA-06512: at "Department.get_emp_name", line 57
    ORA-06512: at line 14
    Hi
    The above are the error messages I am running into and I am not sure what it means at all. I do have a query which select few rows into cursor
    cursor c_requested is
    select * from departments where emp_id in (1, 2, 3)
    now from these rows I again creating a query dynamically
    open c_requested;
    loop
    fetch c_requested into deptID, name, authorized; -- declared variables
    exit when c_requested%NotFound;
    sqlstring := 'Select name from employees where deptID = ' || deptID || ' and Authorized = ' || authorized;
    begin
    execute immediate sqlstring into description; -- declared variable
    exit;
    exception when no_data_found then
    description := 'FILTER_OUT';
    end;
    end loop;
    close c_requested;
    This code is inside a function get_emp_name(). When I execute this function I am getting the above errors. I really appreciate all your help. Please let me know if you need more information.
    Thank you very much

    Thank you very much damorgan,
    I looked through my code and figured out what was wrong. I had a varchar2 column in the table where I was passing a value 999 instead of '999'. Thanks again.
    I have one more question. I am using cursor to loop through.. here is my code
    rowcount integer;
    cursor c_emp is
    select * from employees where empID in (....);
    begin
    open c_emp;
    rowcount := c_emp%RowCount;
    loop
    end loop;
    dbms_output.put_line(rowcount);
    end;
    I am getting rowcount = 0 even though there are many values in it. I am not sure if I am using the where clause properly. Any help would be appreciated.
    thank you.

  • Nested FOR cursor and now results

    Hi Guys,
    I have a simple nexted FOR cursor but the second cursor does not retrieve
    anything at all. The first cursor retrieves values from a-z in low caps letters.
    If I replace in cursor 2 the clause
    SUBSTR(key#,1,1) = SUBSTR(key_rec1.key#,1,1);
    with
    SUBSTR(key#,1,1) = 'a'
    It works fine, if I leave it without my manuall fix it does not retrieve
    any rows. Anyone an idea? I use Oracle 11g.
    DECLARE
    CURSOR c1 IS
    SELECT DISTINCT(SUBSTR(key#,1,1)) AS key# FROM mytable;
    key_rec1 c1%rowtype;
    CURSOR c2 IS
    SELECT key#,
    FROM mytable
    WHERE
    *SUBSTR(key#,1,1) = SUBSTR(key_rec1.key#,1,1); --key_rec1.key#;*
    key_rec2 c2%rowtype;
    BEGIN
    FOR key_rec1 in c1
    LOOP
    FOR key_rec2 in c2
    LOOP
    INSERT INTO mytable2
    key#
    *          SELECT key#*
    *          FROM mybookingtab bsch*
    *          where bsch.key# = key_rec2.key#*
    END LOOP; -- c2
    *END LOOP; --c1*
    END;
    */*

    One should think you'd have learned how to use tags withing 400+ posts...
    not tested:{code}declare
    CURSOR c1 IS
    SELECT DISTINCT (SUBSTR (key#
                           ,  1
                           ,  1
                      AS key#
      FROM mytable;
    -- key_rec1 c1%ROWTYPE; -- needing this should have triggered some thinking...
    CURSOR c2 (p_key_rec1 c1%ROWTYPE)IS -- declare a parameter
    SELECT key#,
    FROM mytable WHERE SUBSTR(key#,1,1) = SUBSTR(p_key_rec1.key#,1,1);  --key_rec1.key#;
    --key_rec2 c2%ROWTYPE;
    BEGIN
      FOR key_rec1 IN c1 LOOP
        FOR key_rec2 IN c2(key_rec1) LOOP -- pass the outer loops current row
          INSERT INTO mytable2 (key#)* (*
    * SELECT key#*
    * FROM mybookingtab bsch*
    * where bsch.key# = key_rec2.key#*
    END LOOP; -- c2
    END LOOP; --c1
    END;
    /{code}
    bye
    TPD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Better pereform for cursors

    Hi everyone
    I'm new in DataBases with Java and I have a question. In my database, I have two tables that have a relationship one-to-many. That is, a person could have many telephone numbers. On the GUI application, one person's register is shown at time. The user can navigate forward and backward through buttons so that the registers are changed on the window. For each person, his phone numbers are also shown. When the cursor is positioning in a person row, the program has to perform a Select statement to search its telephones in the other table. So, everytime the cursor changes in the person table, I have to perform the Select. Is there a better way? I think mine is very expensive...
    Thanks a lot

    Sorry, "Better PERFORM for cursors"

  • Problem in creation of system alias for bw system

    Hi,
    I want to create system alias for the bw system
    system admin->sys Config->system landscape->portal content->my own folder
    for this folder i created the system object
    after creation of system object, from property category i select the connector and give the details.
    after that i select the user management and give
    authentication ticket - select
    Logon method- UIDPW
    User Management type- admin,user
    i saved till now
    in the display object i select the system alias
    then that screen displays
    In the system alias screen, i clicked on add button for adding alias then we r getting this message.
    User Mapping Status:  (Not ready for user mapping configuration)
    Please give the solution for solving this problem
    Regards,
    Sid.
    Edited by: sid m on Mar 11, 2008 12:15 PM

    Hi Krishna,
    I checked  the connection settings.
    WAS settings in system object is giving this mistake
    before user mapping it works fine.
    after giving usermapping i ma getting this exception.
    SAP Web AS Connection
      Test Details:
    The test consists of the following steps:
    1. Check the validity of the system ID in the system object
    2. Check whether the system can be retrieved
    3. Check whether a SAP system is defined in the system object
    4. Validate the following parameters: WAS protocol; WAS host name
    5. Check HTTP/S connectivity to the defined backend application
      Results
    1. The system ID is valid
    2. Retrieval of the system was successful
    3. The system object represents an SAP system
    4. The following parameters are valid: Web AS Protocol (http) Web AS Host Name (172.19.18.75)
    5. HTTP/S connection failed
    for testing the connector i am getting this exception
    Test Connection with Connector
      Test Details:
    The test consists of the following steps:
    1. Retrieve the default alias of the system
    2. Check the connection to the backend application using the connector defined in this system object
      Results
    Retrieval of default alias successful
    Connection failed. Make sure user mapping is set correctly and all connection properties are correct.
    Regards,
    Sid.

  • Return Code - Query for Multiple Rows as XML

    Hi,
    I'm executing an MSSQL stored procedure through the "Query for Multiple Rows as XML" activity in LiveCycle ES. I do this through a call statement such as this:
    { call MyStoredProc(?) }
    This works great, the stored procedure always returns a record set (with or without records). I use this activity rather than "Call Stored Procedure" because I can transform the record set into XML right away within this activity. Unfortunately any exception arising from invoking this stored procedure cannot be handled within the workflow as this activity does not have an exception handler (lightning bolt). In an attempt to handle at least some exceptions we have decided to use try/catches within the stored procedures and return different error codes. Now the problem I am faced with is that there is no way to retrieve the returned code within any of the SQL activities. We don't want to have to write an execute script for each of these SQL calls. Is there any way to do this? Seems like I'm 95% there.
    Thanks
    Nic

    Thanks for the offer, unfortunately we would need something certified by Adobe.
    Nic

  • Check Box for each row in report -- all rows deleting when pressing DELETE

    Hello experts! I have set up a report with a check box for each row. When I click the DELETE button to delete the selected rows, every single one of the rows get deleted...even the ones that are not selected. I have my process point set to "On Submit - After computations and validations".
    This is my delete process (SHG is the table and SHG_ID is the primary key):
    FOR i in 1..HTMLDB_APPLICATION.G_F01.count
    LOOP
    DELETE FROM SHG
    WHERE SHG_ID = HTMLDB_APPLICATION.G_F01(i);
    END LOOP;
    Also, I've added to query in the region source this line:
    htmldb_item.checkbox(1, SHG_ID) del,
    Where does the "1" come into this? Not sure what I am doing wrong!
    Message was edited by:
    user477193
    Message was edited by:
    user477193

    The 1 (first argument to all the htmldb_item.* APIs) corresponds to the array number in htmldb_application.g_fNN. So 1 will populate array g_f01, 2 will populate g_f02 and so on.
    Your code seems fine, it should delete only the checked rows. Are you sure there is no other process on the page that might be deleting the rows? See if you can put up an example on htmldb.oracle.com

  • Prompting user for input for each row in the report

    Is it possible to have a user entered field for each row in a report ?
    ie. have a report with empolyee number, employee name, title, salary, and comment. Select of of these columns from the SQL query except for the comment, and then when the report is generated have the user be prompted for what the want the comment to be for every employee in the report?

    That is, have the user generating the report enter in a different comment for EACH employee. (ie Joe Smith's comment is "good worker and John Smith's comment is "come to work late on Tuesdays and Thursdays", Sally Jones' comment is "Expert in C++" etc.) as the reports is being built for each row returned from the query.

Maybe you are looking for