Compare column value

Hello
I have a row that has 4 columns in a table. I want to know out of the 4 columns which is the cheapest.
Ex: tbl = 'DAN'
Item Rate1, Rate2,Rate3,Rate4
1523 0.02 ,0.01,0.02,0.04
I want to know that Rate2 is the cheapest.
How can I do this in SQL.
Thanks

SQL> COLUMN CHEAPEST_RATE FORMAT A20
SQL> WITH t AS (
  2             SELECT 1523item,0.02 rate1,0.01 rate2,0.02 rate3,0.04 rate4 from dual
  3            )
  4  SELECT  Item,
  5          CASE LEAST(Rate1,Rate2,Rate3,Rate4)
  6            WHEN  Rate1 THEN 'RATE1'
  7            WHEN  Rate2 THEN 'RATE2'
  8            WHEN  Rate3 THEN 'RATE3'
  9            WHEN  Rate4 THEN 'RATE4'
10            ELSE 'At least one rate is NULL.'
11          END CHEAPEST_RATE
12    FROM  t
13  /
      ITEM CHEAPEST_RATE
      1523 RATE2
SQL> SY.

Similar Messages

  • Best way to compare column values of 2 different records

    Hi,
    In my PL/SQL cursor, I want to store the column values of the first record and compare it with the column values of the next record to compare if they have duplicate column values. Should I store the results of the first record with an array and the second item using the cursor? Can you provide me the best practices? Thanks.
    DECLARE
    CURSOR cs IS
    SELECT
    A,
    B
    FROM TABLE;
    BEGIN
    for rec in cs
    loop
    -- this is where I would like to store the column values of the first record and
    -- then compare it with the column values of the 2nd record.
    end loop;
    END;

    The best practice I can recommend would be to not use PL/SQL at all. Cursor FOR LOOPs are one of the slowest forms of processing.
    You should investigate analytical functions such as LAG and LEAD at http://tahiti.oracle.com
    It is always helpful to provide the following:
    1. Oracle version (SELECT * FROM V$VERSION)
    2. Sample data in the form of CREATE / INSERT statements.
    3. Expected output
    4. Explanation of expected output (A.K.A. "business logic")
    5. Use \ tags for #2 and #3. See FAQ (Link on top right side) for details.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Comparing column values within same row

    Script
    <code>
    create table testp
    ( name varchar2(20),
    yr1 number,
    yr2 number,
    yr3 number,
    yr4 number);
    insert into testp values ('Jana',500,400,300,900);
    insert into testp values ('sarat',200,300,800,100);
    commit;
    <code>
    I need the result like this
    <code>
    NAME    First_greatest    Second_greatest
    Jana       900                   500
    sarat       800                   300
    <code>
    I've used greatest function to get the First_greatest result, but not getting the second_greatest, can you help?
    Thanks

    Hi,
    Here's one way to do that:
    WITH got_r_num AS
        SELECT   name
        ,        n
        ,        ROW_NUMBER () OVER ( PARTITION BY  name
                                      ORDER BY      n DESC
                                    )   AS r_num
        FROM     testp
        UNPIVOT   (    n
                  FOR  yr  IN ( yr1
                              , yr2
                              , yr3
                              , yr4
    SELECT    *
    FROM      got_r_num
    PIVOT     (    MAX (n)
              FOR  r_num  IN ( 1 AS first_greatest
                             , 2 AS second_greatest
    Output:
    NAME                 FIRST_GREATEST SECOND_GREATEST
    Jana                            900             500
    sarat                           800             300
    Perhaps your data should be stored in an upivoted form in the first place, with each yr on a separate row.

  • Create a new column in a table that compares the value of one column with its previous value

    The DDL:
    DECLARE
    @T TABLE
    IDNO
    int,
    name
    varchar(40),
    [Date]
    datetime2,
    Price1
    float,
    Price2
    float
    DECLARE
    @K TABLE
    IDNO
    int,
    name
    varchar(40),
    [Date]
    datetime2,
    Price1
    float,
    Price2
    float
    INSERT
    INTO @T
    VALUES(22,'C_V_Harris','2014-01-02 10:23:49.0000000',
    23.335,      
    23.347)
    INSERT
    INTO @T
    VALUES(21,'C_V_Harris','2014-01-02 10:05:13.0000000',
    23.357,      
    23.369)
    INSERT
    INTO @T
    VALUES(20,'C_V_Harris','2014-01-02 09:56:15.0000000',
    23.364,      
    23.377)
    INSERT
    INTO @T
    VALUES(19,'C_V_Harris','2014-01-02 09:45:26.0000000',
    23.351,      
    23.367)
    INSERT
    INTO @T
    VALUES(18,'C_V_Harris','2014-01-02 09:43:20.0000000',
    23.380,      
    23.396)
    INSERT
    INTO @T
    VALUES(17,'C_V_Harris','2014-01-02 09:34:28.0000000',
    23.455,      
    23.468)
    INSERT
    INTO @T
    VALUES(16,'C_V_Harris','2014-01-02 09:30:37.0000000',
    23.474,      
    23.486)
    INSERT
    INTO @T
    VALUES(15,'C_V_Harris','2014-01-02 09:18:12.0000000',
    23.419,      
    23.431)
    INSERT
    INTO @T
    VALUES(14,'C_V_Harris','2014-01-02 09:16:06.0000000',
    23.360,      
    23.374)
    INSERT
    INTO @K
    SELECT
    ROW_NUMBER()
    OVER (ORDER
    by IDNO)
    AS RN,*
    FROM
    @T
    SELECT
    * FROM
    @K
    --not working:
    SELECT
    a.RN,a.Price2
    FROM
    @K a
    INNER
    JOIN @K
    b
    ON
    a.RN=b.RN-1
    WHERE
    a.Price2>b.Price2
    I need to create  a view with a column (say 'Comp' below) that compares the value of each row in Price2 with the previous Price2 row, and it is greater then +1, the
    same 0, and less -1.
    The processed table should be:
    IDNO
    name
    Date
    Price1
    Price2
    Comp
    22
    C_V_Harris
    1/2/2014 10:23:49
    23.335
    23.347
    0
    21
    C_V_Harris
    1/2/2014 10:05:13
    23.357
    23.369
    1
    20
    C_V_Harris
    1/2/2014 9:56:15
    23.364
    23.377
    1
    19
    C_V_Harris
    1/2/2014 9:45:26
    23.351
    23.367
    -1
    18
    C_V_Harris
    1/2/2014 9:43:20
    23.38
    23.396
    1
    17
    C_V_Harris
    1/2/2014 9:34:28
    23.455
    23.468
    1
    16
    C_V_Harris
    1/2/2014 9:30:37
    23.474
    23.486
    1
    15
    C_V_Harris
    1/2/2014 9:18:12
    23.419
    23.431
    -1
    14
    C_V_Harris
    1/2/2014 9:16:06
    23.36
    23.374
    -1
     How can I structure the statement to get (the most recent - order by date ) result for Comp?

    Satheesh Variath, I just had to make some corrections from your script to get the correct answer:
    CREATE
    VIEW vw_Comp
    AS
    SELECT
    TOP 1 t.IDNO,t.name,t.[Date],t.Price1,t.Price2,
    CASE
    WHEN t.Price2
    > LAG(Price2,1)
    OVER (PARTITION
    BY name
    ORDER BY IDNO) 
    THEN 1
    WHEN t.Price2
    < LAG(Price2,1)
    OVER (PARTITION
    BY name
    ORDER BY IDNo) 
    THEN -1
    ELSE 0
    END
    AS Comp
    FROM 
    @T t
    ORDER
    BY DATE
    DESC
    The adjustments: the selection of the most recent comparison (Top 1) and the use of the function LAG (instead of LEAD) to get the previous value of the column.

  • Using md5 in a manul tabular form to compare if column value changed

    Version: Application Express 3.2.0.00.27
    Hello,
    I am creating a manul tabular form using apx_item in my select statment that is the source for the query in a report region. I am using a collection. The collection creation statement is:
        apex_collection.create_collection_from_query(
           p_collection_name => 'DELEG_COLL',
           p_query           => 'SELECT authid
                               ,empid empid
                               ,to_char(deldate,''DD-MON-YYYY'') deldate
                               ,delscope delscope
                               ,dellimits dellimits
                               ,subdelrights subdelrights
                               ,to_char(delexpiry,''DD-MON-YYYY'') delexpiry
                               ,to_char(datedelremoved,''DD-MON-YYYY'') datedelremoved
                               ,delremovalcomments delremovalcomments
                               ,delegator delegator
                               ,''O'' original_record
                               ,wwv_flow_item.md5(delscope, dellimits, subdelrights,
                                  to_char(delexpiry,''DD-MON-YYYY'') delexpiry,
                                  to_char(datedelremoved,''DD-MON-YYYY'') datedelremoved,
                                  delremovalcomments, delegator)
                               FROM tbl_delegations
                               where empid = v(''P12_EMPID'')',
           p_generate_md5     => 'YES');The above code is giving me an error in the function
    wwv_flow_item.md5(delscope, dellimits, subdelrights,
                                  to_char(delexpiry,''DD-MON-YYYY'') delexpiry,
                                  to_char(datedelremoved,''DD-MON-YYYY'') datedelremoved,
                                  delremovalcomments, delegator)It doesn't seem to like where I attempt to convert date column delexpiry and datedelremoved to a varchar. I am doing this as in the db they are dates and inorder to using the md5 function to compare if the values have changed and only update rows where the values changed.
    There error that I get is:
    ORA-20104: create_collection_from_query Error:ORA-20104: create_collection_from_query ParseErr:ORA-00907: missing right parenthesis
    In the collection I am trying to store the md5 hash result. I haved all the update and insert logic working expect for date type columns. THose give the above error.
    I thank you ahead of time for your assistance!
    A. Shalon

    Helen,
    Not sure I fully understand your goal.  We don't use "tasks" at all but if you are looking to have your workflow check certain valus and be able to send email messages to people based on whatever, then you can certainly do that (as long as your Sharepoint
    has the email setup.  We do this for alot of workflow tasks.
    So, in the workflow you can have a blanket statement like what I previously listed:
    if Current Item:hiddenStatus  not equals Current Item:Status
        .... do something
    or you can do something like:
    if Current Item:hiddenStatus equals "In-Progress"
        .... do something
    Else if Current Item:hiddenStatus  equals "Completed"
        .... do something
    or combine the two and do nested "if" statements.  Then you add an email statement wherever you need it like:
    if Current Item:hiddenStatus  equals "Completed"
       then email "these users"
    To add the email part, just type in "email" on the line where you want to add a statment.  There is only one option to choose from.  That will display the line "then email these users".   The "these users" will be a link.  When you
    click it you will get a popup to add the email info.  We typically will send the email to a user (or users) that are already listed in one of the PeoplePicker fields.  On the email form, you can type in your own text, designate that a value is based
    on a column value (like our PeoplePicker), designate that a value is based on a workflow variable, add a link to the current item, etc.  To get to these options you will click the button to the right of the fields or use the "Add or Change Lookup" button
    in the bottom-left for the text area.  There is alot you can set in the mail.
    Does this help answer your question?
    - Peter

  • Error -3016 when trying to compare a column value via "decode" function

    The following statement:
      select * from turbine_user
      where login_name  = decode(1, 2,  'name1', 'name2')
    yields a "-3016 Invalid numeric constants" error.
    OTOH, the following variations work as expected:
      (a)
      select * from turbine_user
      where login_name  = 'name1'
      (b)
      select * from turbine_user
      where login_name  = 'name2'
      (c)
      select * from turbine_user
      where 'name1'  = decode(1, 2,  'name1', 'name2')
      (d)
      select decode(1, 2,  'name1', 'name2') from turbine_user
    Does MaxDB have problems with using the decode function to compare something to column values?
    My MaxDB-Version: 7.6.03.07
    Thanks in advance,
    Alex
    Edited by: Alexander Zimmer on Feb 6, 2008 3:53 PM

    Hi,
    unfortunately I assume that I should explain the doing of decode a little bit:
    As we see in the reference manual:
    DECODE(<check_expression>,<search_and_result_spec>,...[,<default_expression>])
    <check_expression> ::=
      <expression>
    <search_and_result_spec> ::=
      <search_expression>,<result_expression>
    <default_expression> ::=
      <expression>
    <search_expression> ::=
      <expression>
    <result_expression> ::=
      <expression>
    Ok, that will mean, that the first parameter of decode will be compared to parameter number 2, 4, 6, 8, 10,... up to number n-1.
    If the result of the comparison is true with parameter number x, the result of decode will be the value of parameter x+1.
    If no comparison results in 'equal', then NULL will be returned if there is an odd number of parameters respectively the value of the last parameter if there is an even number of parameters of the decode function.
    In your context, this means, that 1 is compared to 2 (always false), thus returning 'name2' always. Therefore I do not understand what you want to do with that decode.
    Ok, if we assume that the select sent is only a short form of what you really want to do, then I have to apologize, but there is a bug in the kernel coding. It will be fixed ASAP.
    To be able to work until then, put the function DIGITS around your 1 and around the 2 (or the corresponding real parameter values) and it should do.
    BTW: with column on the left hand side, the error occurs and with a string literal it does not? This is different to my check where both values on the left side cause this error to occur.
    Elke

  • Function to compare particular value with LOV Additional Description column

    Hi,
    Is there an existing function that compares a value with the "Additional Description" of a particular LOV ?
    Can the comparison be done by "Adminstration - Personalization"?

    Sorry & thanks sathish,
    Now i got the result.
    SQL> select DECISIONED_STAGE_ID,DECISIONED_STAGE_USER_ID from naap10_application where APP_DECISION_DATE BETWEEN TO_DATE ('31.01.2007 00:00:00', 'DD.MM.YYYY HH24:MI:SS') AND TO_DATE ('31.01.2007 23:59:59', 'DD.MM.YYYY HH24:MI:SS')
    2 and application_id=2007010028552;
    DECISIONED_STAGE_ID DECISIONED_STAG
    2006060113 SYSTEM
    ================================
    But one doubt,
    When i created the column with the date datatype how it gets the time value,
    And in one environment db i got the result but in another environment i dont get,
    Shall i want to change any session status of date?

  • Compare previous column value in BPS Layout

    How to compare the two column values in BPS layout.
    My layout format
    PO NO
    GL
    Actual
    Amount
    1001
    701
    1200
    User Entry
    Actual Value is 1200, User will enter the Amount but it should be equal to 1200 or less then that.
    If user entered more than 1200 in Amount column, I should get error message.
    Thanks in advance.
    Regards,
    Kiruthika

    Hi Uryukin Andrey,
    Where do we need to use this fox formula? Could you please explain steps to use this FF?
    Thanks,
    Harry

  • How to update a column value by comparing old value by using DML Handler...

    Hi Can anyone post the DML Handler code for updating a column value by comparing the old value.
    Thanks,
    Ray

    Hi,
    Here is an example of a DML handler.
    BEGIN
    DBMS_APPLY_ADM.SET_DML_HANDLER(
    object_name => 'scott.emp',
    object_type => 'TABLE',
    operation_name => 'UPDATE',
    error_handler => false,
    user_procedure => 'strmadmin.update_column',
    apply_database_link => NULL,
    apply_name => 'MY_APPLY');
    END;
    This DML handler which will send any LCR matching the specified conditions to the strmadmin.update_column for customised processing.
    You can write the strmadmin.update_column procedure so that it extracts the old values from the LCR. You can then use the old values from the LCR to identify the row in the table. Once you identify the row, you can update it as you want.
    I haven't really tried to do any customised processing using DML handlers, but this should work.
    Hope this is of help.
    Sujoy

  • Oracle SP for comparing 80 column values across 8 table pairs in 2 diff DBs

    Hi All,
    I have an Oracle SP for comparing 80 column values across 8 table pairs in 2 diff DBs.
    However, it is taking hell lot of time around 6hours to process 10,000 records.
    Can anyone suggest how to fine-tune this?
    Thanks guys.

    Tables prefixed with X are the temp tables to store data of DB-A.
    The report will be originally based on DB-B, so DB Links will not be required for @PROD1.WORLD tables.
    This is a test region, so I have pointed to @PROD1.WORLD to test with Prod Data.
    SEC_COMPARE_CONFIG is the config table containing the table_name to be reported, corresponding temp tables to store the data and the columns on which it is to be reported.
    There are in total 8 tables- 90 rows and 8 temp tables.
    SPOKE_TO_HUB_SEC_MTCH_TBL records the securities on which it is to be reported.
    HIST_DATA_COMPARE_TBL is the final results table.
    Here is the entire code:
    CREATE OR REPLACE PACKAGE SECURITY_COMPARE AS
    PROCEDURE          PROCESS_RECORDS       (IN_EFFECTIVE_DATE               IN        DATE,
                                              IN_PRIMARY_ASSET_ID            IN        VARCHAR2    DEFAULT NULL);
    PROCEDURE          IDENTIFY_SECURITIES    ( P_EFFECTIVE_DATE                IN          DATE,
                                                P_PRIMARY_ASSET_ID              IN         VARCHAR2  DEFAULT NULL);
    PROCEDURE           RETREIVE_RECORDS_FROM_SPOKE;
    PROCEDURE           COMPARE_RECORDS(p_err_msg     OUT     VARCHAR2);
    PROCEDURE           INSERT_DATA_TO_TABLE  ( v_target_table VARCHAR2,  v_sql_to_run   VARCHAR2,    v_commit_after NUMBER);
    END SECURITY_COMPARE;
    CREATE OR REPLACE PACKAGE BODY SECURITY_COMPARE AS
    /*Declared String for recording Dynamic SQL's*/
    LC_SQL                  VARCHAR2 (20000);
    PROCEDURE   PROCESS_RECORDS(IN_EFFECTIVE_DATE              IN  DATE,
                                IN_PRIMARY_ASSET_ID          IN  VARCHAR2    DEFAULT NULL)
    AS
    L_EFF_DATE                                        DATE;                      
    L_PRIMARY_ASSET_ID                         VARCHAR2(100);                    
    k_err_msg                                           VARCHAR2(100);                    --Error message displayed in case of NO discretionary records found.
    BEGIN
                    L_EFF_DATE                    := IN_EFFECTIVE_DATE;
                    L_PRIMARY_ASSET_ID     := IN_PRIMARY_ASSET_ID;
                    IDENTIFY_SECURITIES(L_EFF_DATE,L_PRIMARY_ASSET_ID);        --Calling the Identify_Securities procedure to identify the securities older by 90 days from report effective date
                    RETREIVE_RECORDS_FROM_SPOKE();                                        --Retreiving the historic records from the security tables into temporary tables.
                    COMPARE_RECORDS(p_err_msg=>k_err_msg);                          --Compare the records and report the discrepencies into HIST_DATA_COMPARE_TBL table      
    END PROCESS_RECORDS;
    PROCEDURE IDENTIFY_SECURITIES(P_EFFECTIVE_DATE              IN  DATE,
                                                        P_PRIMARY_ASSET_ID               IN  VARCHAR2  DEFAULT NULL)
    AS
    P_EFF_DATE                          DATE;                       --Effective Date of the report
    P_PRIMARY_ID                         VARCHAR2(100);     --Primary AssetID which is used to search based on specific security
    v_target_table                        VARCHAR2(500);     --Variable indicating the Target table for inserting the data
    v_sql_to_run                          VARCHAR2(5000);   --Variable to store the Dynamic SQL to be executed
    v_commit_after                      NUMBER;                --Variable to define after how many records is COMMIT to be done
    BEGIN
            LC_SQL                 :='';
            P_EFF_DATE          := P_EFFECTIVE_DATE;
            P_PRIMARY_ID         := P_PRIMARY_ASSET_ID;
            /*Deleting Old Entries from SPOKE_TO_HUB_SEC_MTCH_TBL table*/
               LC_SQL := 'TRUNCATE TABLE SPOKE_TO_HUB_SEC_MTCH_TBL';
               EXECUTE IMMEDIATE LC_SQL;
            IF(P_PRIMARY_ID is NULL)    --In case records do not need to be identified on basis of specific security
            THEN  
                /*Identify Securities older by 90days from report effective date*/
                     v_target_table := ' SPOKE_TO_HUB_SEC_MTCH_TBL';
                     v_sql_to_run := 'WITH T AS ('||
                                             ' SELECT  R.PRIMARY_ASSET_ID PRIMARY_ASSET_ID_R,'||
                                             ' R.SECURITY_ALIAS SECURITY_ALIAS_R,'||
                                             ' R.LAST_HELD_DATE LAST_HELD_DATE_R,'||
                                             ' R.PREV_HELD_DATE PREV_HELD_DATE_R,'||
                                             ' Q.PRIMARY_ASSET_ID PRIMARY_ASSET_ID_Q,'||
                                             ' Q.SECURITY_ALIAS SECURITY_ALIAS_Q,'||
                                             ' COUNT(*) OVER(PARTITION BY Q.PRIMARY_ASSET_ID) CNT'||
                                            ' FROM  [email protected] R,'||
                                            ' [email protected] Q'||
                                            ' WHERE SYS_OP_MAP_NONNULL(R.last_held_date) <> '||q'!'FF'!'||
                                           ' and ceil(R.last_held_date-to_date('||''''||P_EFF_DATE||''''||')) >= 0'||
                                           ' and ceil(R.last_held_date-to_date('||''''||P_EFF_DATE||''''||')) <= 60'||
                                           ' and R.PRIMARY_ASSET_ID=Q.PRIMARY_ASSET_ID'||
                                           ' )'||
                                          ' SELECT  PRIMARY_ASSET_ID_R,'||
                                          ' SECURITY_ALIAS_R,'||
                                          ' LAST_HELD_DATE_R,'||
                                          ' PREV_HELD_DATE_R,'||
                                          ' PRIMARY_ASSET_ID_Q,'||
                                          ' SECURITY_ALIAS_Q'||
                                          ' FROM  T'||
                                          ' WHERE CNT =1';
                     v_commit_after := 0;
                     INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
            ELSE
                        v_target_table := ' SPOKE_TO_HUB_SEC_MTCH_TBL';
                        v_sql_to_run := 'WITH T AS ('||
                                             ' SELECT  R.PRIMARY_ASSET_ID PRIMARY_ASSET_ID_R,'||
                                             ' R.SECURITY_ALIAS SECURITY_ALIAS_R,'||
                                             ' R.LAST_HELD_DATE LAST_HELD_DATE_R,'||
                                             ' R.PREV_HELD_DATE PREV_HELD_DATE_R,'||
                                             ' Q.PRIMARY_ASSET_ID PRIMARY_ASSET_ID_Q,'||
                                             ' Q.SECURITY_ALIAS SECURITY_ALIAS_Q,'||
                                             ' COUNT(*) OVER(PARTITION BY Q.PRIMARY_ASSET_ID) CNT'||
                                            ' FROM  [email protected] R,'||
                                            ' [email protected] Q'||
                                            ' where R.PRIMARY_ASSET_ID='||''''||P_PRIMARY_ID||''''||
                                            ' and R.PRIMARY_ASSET_ID=Q.PRIMARY_ASSET_ID'||
                                           ' )'||
                                          ' SELECT  PRIMARY_ASSET_ID_R,'||
                                          ' SECURITY_ALIAS_R,'||
                                          ' LAST_HELD_DATE_R,'||
                                          ' PREV_HELD_DATE_R,'||
                                          ' PRIMARY_ASSET_ID_Q,'||
                                          ' SECURITY_ALIAS_Q'||
                                          ' FROM  T'||
                                          ' WHERE CNT =1';
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
            END IF;
            LC_SQL := 'TRUNCATE TABLE HIST_DATA_COMPARE_TBL';
            EXECUTE IMMEDIATE LC_SQL;
    END IDENTIFY_SECURITIES;
    PROCEDURE           RETREIVE_RECORDS_FROM_SPOKE
    AS
    v_target_table                                                      VARCHAR2(500);
    v_sql_to_run                                                        VARCHAR2(5000);
    v_commit_after                                                      NUMBER;
    BEGIN
        LC_SQL :='';
        LC_SQL:= 'TRUNCATE TABLE X_SECMASTER_HISTORY_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_SEC_MASTER_DTL_HIST_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_SECMASTER_DTL_EXT_HST_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_EQUITY_HIST_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_EQUITY_DETAIL_HIST_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_FIXED_INCOME_HIST_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_FIXED_INCOME_DTL_EXT_TBL';
        EXECUTE IMMEDIATE LC_SQL;
        LC_SQL:= 'TRUNCATE TABLE X_DERIVATIVES_HIST_TBL';
        EXECUTE IMMEDIATE LC_SQL;
            /*SECMASTER_HISTORY*/
            v_target_table := 'X_SECMASTER_HISTORY_TBL';
            v_sql_to_run := ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                                    ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                                    ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                                    ' AND K.SRC_INTFC_INST = 140 '||
                                    ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM  [email protected] H WHERE'||
                                    ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*SECURITY_MASTER_DETAIL_HIST*/
                v_target_table := 'X_SEC_MASTER_DTL_HIST_TBL';
              v_sql_to_run:=       ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                     ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                     ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                     ' AND K.SRC_INTFC_INST = 140 '||
                     ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                     ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*SECMASTER_DETAIL_EXT_HIST*/
        v_target_table := 'X_SECMASTER_DTL_EXT_HST_TBL';
               v_sql_to_run:=       ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                     ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                     ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                      ' AND K.SRC_INTFC_INST = 140 '||
                      ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                      ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*EQUITY_HIST*/
        v_target_table := 'X_EQUITY_HIST_TBL';
               v_sql_to_run:=        ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                      ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                      ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                       ' AND K.SRC_INTFC_INST = 140 '||
                       ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                       ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*EQUITY_DETAIL_HIST*/
        v_target_table := 'X_EQUITY_DETAIL_HIST_TBL';
             v_sql_to_run:=        ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                     ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                     ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                     ' AND K.SRC_INTFC_INST = 140 '||
                     ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                     ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*FIXED_INCOME_HIST*/
            v_target_table := 'X_FIXED_INCOME_HIST_TBL';
               v_sql_to_run:=       ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                     ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                     ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                      ' AND K.SRC_INTFC_INST = 140 '||
                      ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                      ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*FIXED_INCOME_DETAIL_EXT_HIST*/
        v_target_table := 'X_FIXED_INCOME_DTL_EXT_TBL';
               v_sql_to_run:=       ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                     ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                     ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                      ' AND K.SRC_INTFC_INST = 140 '||
                      ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                      ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
        /*DERIVATIVES_HIST*/
        v_target_table := 'X_DERIVATIVES_HIST_TBL';
           v_sql_to_run:=           ' SELECT /*+DRIVING_SITE(K)*/ K.* FROM [email protected] K '||
                      ' INNER JOIN SPOKE_TO_HUB_SEC_MTCH_TBL I'||
                     ' ON K.SECURITY_ALIAS = I.SPOKE_SEC'||
                      ' AND K.SRC_INTFC_INST = 140 '||
                      ' and K.EFFECTIVE_DATE =(SELECT /*+DRIVING_SITE(H)*/ MAX (H.EFFECTIVE_DATE) FROM [email protected] H WHERE'||
                      ' H.SECURITY_ALIAS = K.SECURITY_ALIAS AND H.SRC_INTFC_INST = K.SRC_INTFC_INST)' ;
                           v_commit_after := 0;
                           INSERT_DATA_TO_TABLE(v_target_table,v_sql_to_run,v_commit_after);
    END RETREIVE_RECORDS_FROM_SPOKE;
    PROCEDURE           COMPARE_RECORDS(p_err_msg     OUT     VARCHAR2)
    AS
        l_count                                                                 NUMBER;
        l_err_msg                                                             VARCHAR2(100);
        TYPE T_SECURITIES is TABLE of HIST_DATA_COMPARE_TBL%rowtype;
        ttype                                                                    T_SECURITIES;
        CURSOR C1
        IS
        SELECT  TABLE_NAME, TEMP_TABLE, COLUMN_NAME from SEC_COMPARE_CONFIG
        where column_name='EFFECTIVE_DATE';
        CURSOR C2
        IS
        SELECT * FROM SEC_COMPARE_CONFIG where id <=82;
        C_REC                                 SEC_COMPARE_CONFIG%rowtype;
        BEGIN
            LC_SQL :='';
            p_err_msg :='';
                FOR C_REC in C1
                loop  
                                LC_SQL:=     ' SELECT /*+DRIVING_SITE(B)*/ /*+PARALLEL(A,100)*/ B.SECURITY_ALIAS, to_char(C.SPOKE_PAID), A.SECURITY_ALIAS,to_char(C.HUB_PAID),'||''''||C_REC.TABLE_NAME||''''||','||q'!'EFFECTIVE_DATE'!'||','||
                                                    ' NVL((cast(B.'||C_REC.COLUMN_NAME||' as VARCHAR2(100))),'||q'!'No Records Found'!'||'),'||
                                                    ' NVL((cast(A.'||C_REC.COLUMN_NAME||' as VARCHAR2(100))),'||q'!'No Records Found'!'||')'||
                                                    ' FROM '||C_REC.TEMP_TABLE||' A, SECURITYDBO.'||C_REC.TABLE_NAME ||'@PROD1.WORLD B,'||
                                                    ' SPOKE_TO_HUB_SEC_MTCH_TBL C'||                                
                                                    ' WHERE A.SRC_INTFC_INST=140'||
                                                    ' AND B.SRC_INTFC_INST=140'||
                                                    ' AND A.SECURITY_ALIAS=C.spoke_sec'||
                                                    ' and b.security_alias=C.HUB_SEC'||
                                                    ' AND a.effective_date <> (select max(h.effective_date) from SECURITYDBO.'||C_REC.TABLE_NAME||'@PROD1.WORLD H'||
                                                    ' where h.security_alias=c.hub_sec and h.src_intfc_inst=140 )';
                                        EXECUTE IMMEDIATE LC_SQL BULK COLLECT into ttype;
                              FORALL x in ttype.First..ttype.Last
                                        insert into HIST_DATA_COMPARE_TBL values ttype(x);                 
                                        commit;
                end loop;
               For C_REC in C2
                loop
                                LC_SQL:=     ' SELECT /*+DRIVING_SITE(B)*/ /*+PARALLEL(A,100)*/ B.SECURITY_ALIAS, to_char(C.SPOKE_PAID), A.SECURITY_ALIAS,to_char(C.HUB_PAID),'||''''||C_REC.TABLE_NAME||''''||','||''''||C_REC.COLUMN_NAME||''''||','||
                                                    ' NVL((cast(B.'||C_REC.COLUMN_NAME||' as VARCHAR2(100))),'||q'!'No Records Found'!'||'),'||
                                                    ' NVL((cast(A.'||C_REC.COLUMN_NAME||' as VARCHAR2(100))),'||q'!'No Records Found'!'||')'||
                                                    ' FROM '||C_REC.TEMP_TABLE||' A, SECURITYDBO.'||C_REC.TABLE_NAME ||'@PROD1.WORLD B,'||
                                                    ' SPOKE_TO_HUB_SEC_MTCH_TBL C'||                                
                                                    ' WHERE A.SRC_INTFC_INST=140'||
                                                    ' AND B.SRC_INTFC_INST=140'||
                                                    ' AND A.SECURITY_ALIAS=C.spoke_sec'||
                                                    ' and b.security_alias=C.HUB_SEC'||
                                                    ' and b.effective_date=a.effective_date'||
                                                  ' AND NVL((cast(A.'||C_REC.column_name||' as VARCHAR2(100))),'||q'!'No Records Found'!'||') <>'||
                                                    ' NVL((cast(B.'||C_REC.column_name||' as VARCHAR2(100))),'||q'!'No Records Found'!'||')';
                             EXECUTE IMMEDIATE LC_SQL BULK COLLECT into ttype;
                            FORALL x in ttype.First..ttype.Last
                                    insert into HIST_DATA_COMPARE_TBL values ttype(x);                 
                                    commit;
                end loop;
                BEGIN
                    select  count(*) into l_count from HIST_DATA_COMPARE_TBL;
                    if(l_count=0) then
                            l_err_msg :='No records found';
                    end if;
                END;
        END COMPARE_RECORDS;
                NAME:               INSERT_DATA_TO_TABLE
    DESCRIPTION:               This procedure will insert the records into the target table based based on the data fetched using the sql to run variable.
                                        It also records the commit_after variable which defines that after how many records the insert needs to be committed.
    PROCEDURE INSERT_DATA_TO_TABLE  ( v_target_table VARCHAR2,
                                                                v_sql_to_run   VARCHAR2,
                                                                v_commit_after NUMBER) IS
    v_limit_sql1    VARCHAR2(300) := ' ';
    v_limit_sql2    VARCHAR2(900) := ' ';
    v_plsql_to_run  VARCHAR2(32767);
    BEGIN
            IF NVL(v_commit_after,0) <> 0 THEN
                v_limit_sql1:=  '  LIMIT ' || TO_CHAR(v_commit_after) ;
                v_limit_sql2:=  '   IF MOD(v_number_of_rows, ' || TO_CHAR(v_commit_after) || ' ) = 0 THEN     ' ||
                      '       COMMIT;                                                               ' ||
                      '   END IF;                                                                   ' ;
            END IF;
            v_plsql_to_run:=  '                                                                             ' ||
                      'DECLARE                                                                      ' ||
                      ' v_number_of_rows number:=0;                                                 ' ||
                      '                                                                             ' ||
                      ' TYPE MyType IS REF CURSOR;                                                  ' ||
                      ' CV MyType;                                                                  ' ||
                      ' TYPE RecTyp IS TABLE OF ' || v_target_table || '%ROWTYPE;                   ' ||
                      ' rec RecTyp;                                                                 ' ||
                      '                                                                             ' ||
                      'BEGIN                                                                        ' ||
                      '                                                                             ' ||
                      'OPEN CV FOR                                                                  ' ||
                      '    ' || REPLACE( v_sql_to_run, ';', ' ' )  || ' ;                           ' ||
                      ' LOOP                                                                        ' ||
                      '     FETCH CV BULK COLLECT INTO rec ' || v_limit_sql1 || ';                  ' ||
                      '     FORALL i IN 1..rec.COUNT                                                ' ||
                      '         INSERT /*+ APPEND */ INTO ' || v_target_table || ' VALUES rec(i);   ' ||
                      '         v_number_of_rows  := v_number_of_rows + SQL%ROWCOUNT;               ' ||
                      ' ' || v_limit_sql2 || '                                                      ' ||
                      '     EXIT WHEN CV%NOTFOUND;                                                  ' ||
                      '                                                                             ' ||
                      ' END LOOP;                                                                   ' ||
                      ' COMMIT;                                                                     ' ||
                      ' CLOSE CV;                                                                   ' ||
                      'END;                                                                         ';
            EXECUTE IMMEDIATE v_plsql_to_run;
            COMMIT;
    END INSERT_DATA_TO_TABLE;
    END SECURITY_COMPARE;

  • Column value '        ' too long - must stop', probably configuration error

    Hi Experts,
    I have a Proxy to File Scenario when I execute it I get this error in RWB. Can you please help me on this:
    Message processing failed. Cause: com.sap.aii.messaging.adapter.trans.TransformException: Error converting Message: 'java.lang.Exception: Exception in XML Parser (format problem?):'java.lang.Exception: Message processing failed in XML parser: 'java.lang.Exception: Column value '        ' too long - must stop', probably configuration error in file adapter (XML parser error)''; nested exception caused by: java.lang.Exception: Exception in XML Parser (format problem?):'java.lang.Exception: Message processing failed in XML parser: 'java.lang.Exception: Column value '        ' too long - must stop', probably configuration error in file adapter (XML parser error)'
    Thanks
    Srikanth E

    Hi,
    if there is any empty tag coming from source then target structure tag will not be created and because of which ur payload structure and FCC configuration is not matching.
    To use map with default between source and target strcture so in case source tag dont have value target structure will be created because of mapwithdegfault fuction and ur FCC will not fail.
    Open SXMB_MONI output payload and compare the structre with Data type u will se for no source value target tag is not created at all and FCC is failed.
    please refer below thread,
    0 byte txt file using receiver File Adapter
    regards,
    ganesh.

  • How to compare, current value in :block.text_item with the database value

    Hi
    Could you please tell me
    How to compare the current value in :block.text_item with the corresponding database column value.
    I am using forms 10g
    There is block and there is an text Item in that block.
    When I run the form and query the block (tabular), the :block.text_item shows me, whatever value there in the database.
    Now I add some value in the :block.text_item to the existing value.
    now
    the :block.text_item contains old+ new added value
    whereas
    the database table contains 'old' value
    Now on a button click , I want to find out what is the value that I have added
    Could you please tell me, is it possible without writing a select query?

    Hello,
    Now on a button click , I want to find out what is the value that I have addedSo you mean always user will add value in the existing value. Because this way will fail in one case. Let say
    Value in Database is = ABCD
    User opened the form and he removed the D and write E and now value is ABCE and length is still same 4. So, there is no addition.
    Anyway you can know the database value at runtime there is one property for item called DATABASE_VALUE. It gives the value which is in database while you are running the form before save. and you can use like this..
    Trigger = WHEN-MOUSE-DOUBLE-CLICK on item level
    DECLARE
      vItemValue DATATYPE; -- Set the data type according to your desired field.
      vValueAdded DATATYPE; -- Set the data type according to your desired field.
    BEGIN
      vItemValue:=GET_ITEM_PROPERTY('ITEM_NAME',DATABASE_VALUE);  -- It will return you the database value in vItemValue variable.
      IF LENGTH(vItemValue)>LENGTH(:FORM_ITEM_NAME) THEN  -- It mean something change or added
        vValueAdded:=SUBSTR(:FORM_ITEM_NAME,LENGTH(vItemValue)+1);
        MESSAGE('Added value is : '||vValueAdded);  -- It will show you the added value.
      END IF;
      -- now suppose you want to show the old and new value in message not the added one
      -- Then no need of IF condition. You can just use message like this
      -- And i would prefer to use like this way
      MESSAGE('Old Value : '||vItemValue||'  New Value - '||:FORM_ITEM_NAME);
      MESSAGE('Old Value : '||vItemValue||'  New Value - '||:FORM_ITEM_NAME);
    END;Hope it is clear.
    -Ammad

  • Comparing columns in table and triggers

    hi masters,
    i have oracle 10g in Linux and us PL/SQL developer to access database, ia m not a developer, but am assigned task to compare columns in table and associated trigger.
    let me explain, we have 800 tables, and each table essentially have a trigger created on it. the condition is that each trigger on table should include each column in table, that is columns in table and trigger should be same.
    now i don't understand how to compare them, rather can you suggest any query for the same?? and comparing 800 tables manually will be tedious job...
    i am unable to compare trigger columns with that of tables..
    how can we achieve this???
    any suggestions??
    thanks and regards
    VD

    Hi,
    A good starting point could be consult user_triggers view. Example:
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
    Connected as hr
    SQL> desc user_triggers
    Name              Type           Nullable Default Comments                                                                   
    TRIGGER_NAME      VARCHAR2(30)   Y                Name of the trigger                                                        
    TRIGGER_TYPE      VARCHAR2(16)   Y                Type of the trigger (when it fires) - BEFORE/AFTER and STATEMENT/ROW       
    TRIGGERING_EVENT  VARCHAR2(227)  Y                Statement that will fire the trigger - INSERT, UPDATE and/or DELETE        
    TABLE_OWNER       VARCHAR2(30)   Y                Owner of the table that this trigger is associated with                    
    BASE_OBJECT_TYPE  VARCHAR2(16)   Y                                                                                           
    TABLE_NAME        VARCHAR2(30)   Y                Name of the table that this trigger is associated with                     
    COLUMN_NAME       VARCHAR2(4000) Y                The name of the column on which the trigger is defined over                
    REFERENCING_NAMES VARCHAR2(128)  Y                Names used for referencing to OLD, NEW and PARENT values within the trigger
    WHEN_CLAUSE       VARCHAR2(4000) Y                WHEN clause must evaluate to true in order for triggering body to execute  
    STATUS            VARCHAR2(8)    Y                If DISABLED then trigger will not fire                                     
    DESCRIPTION       VARCHAR2(4000) Y                Trigger description, useful for re-creating trigger creation statement     
    ACTION_TYPE       VARCHAR2(11)   Y                                                                                           
    TRIGGER_BODY      LONG           Y                Action taken by this trigger when it fires                                 
    SQL> select * from user_triggers;
    TRIGGER_NAME                   TRIGGER_TYPE     TRIGGERING_EVENT                                                                 TABLE_OWNER                    BASE_OBJECT_TYPE TABLE_NAME                     COLUMN_NAME                                                                      REFERENCING_NAMES                                                                WHEN_CLAUSE                                                                      STATUS   DESCRIPTION                                                                      ACTION_TYPE TRIGGER_BODY
    TRGTEST                        BEFORE STATEMENT INSERT                                                                           HR                             TABLE            DEPARTMENTS                                                                                                     REFERENCING NEW AS NEW OLD AS OLD                                                                                                                                 ENABLED  trgTest                                                                          PL/SQL      DECLARE
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  before insert on departments                                                                   -- local variables here
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             BEGIN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 nul;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             END trgTest;
    UPDATE_JOB_HISTORY             AFTER EACH ROW   UPDATE                                                                           HR                             TABLE            EMPLOYEES                                                                                                       REFERENCING NEW AS NEW OLD AS OLD                                                                                                                                 ENABLED  update_job_history                                                               PL/SQL      BEGIN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AFTER UPDATE OF job_id, department_id ON employees                                           add_job_history(:old.employee_id, :old.hire_date, sysdate,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  FOR EACH ROW                                                                              
    SECURE_EMPLOYEES               BEFORE STATEMENT INSERT OR UPDATE OR DELETE                                                       HR                             TABLE            EMPLOYEES                                                                                                       REFERENCING NEW AS NEW OLD AS OLD                                                                                                                                 ENABLED  secure_employees                                                                 PL/SQL      BEGIN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  BEFORE INSERT OR UPDATE OR DELETE ON employees                                               secure_dml;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             END secure_employees;
    RK_ALT_BEF_TRG                 AFTER EVENT      ALTER                                                                            HR                             SCHEMA                                                                                                                           REFERENCING NEW AS NEW OLD AS OLD                                                                                                                                 ENABLED  rk_alt_bef_trg                                                                   PL/SQL      BEGIN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AFTER ALTER ON HR.SCHEMA                                                                         dbms_output.put_line('AFTER Schema trigger fired');
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 dbms_output.
    SQL> Regards,

  • Best way to calculate maximum of many columns/values per row

    Hello,
    for a new report with some joined tables I have to calculate the last change date. Since every table has a creation and a (last) modification date, I need to get the maximum value from 8 columns to display it.
    Of course I can compare all values by pairs or create a PL/SQL function. But maybe there already exists a fast and easy way to gain this date?
    My query so far. Each of the tables has a cr_date and mod_date column:
    SELECT
        egvg.baugruppe_nummer || egvg.anlagennummer || egvg.geraetenummer AS systemnummer
        , '=' || egvg.baugruppe_nummer || egvg.anlagennummer || egvg.geraetenummer AS systemnr2
        , egvg.gebrauchsname AS gebrauchsname
        , NVL2(egvr.raumkode, '+' || egvr.raumkode, NULL) AS raumkode
        , egvg.lieferant AS lieferant
        , CASE egvgs.kabelanschluss WHEN 1 THEN 'ja' WHEN 0 THEN 'nein' ELSE NULL END AS kabelanschluss
        , egvges.nennleistung_kva AS nennleistung
        , NULL AS letzte_aenderung
        , CASE WHEN egvg.status_id = -1 THEN 'GERÄT GELÖSCHT' WHEN egvges.status_id = -1 THEN 'EDATEN GELÖSCHT' ELSE NULL END AS status
      FROM
        egv_geraete egvg
        LEFT JOIN egv_geraetestamm egvgs ON egvgs.id = egvg.geraetestamm_id
        LEFT JOIN egv_geraetestamm_edatenstamm egvges ON egvges.geraetestamm_id = egvgs.id
        LEFT JOIN egv_raeume egvr ON egvr.id = egvg.raum_id
        LEFT JOIN egv_edaten_sfp egvsfp ON egvsfp.id = egvges.sfp_idThank you,
    Stefan

    >
    This method works but is there an easier (faster) way to update another table with new data only?
    >
    Almost anything would be better than that slow-by-slow loop processing.
    You don't need a procedure you should just use MERGE for that. See the examples in the MERGE section of the SQL Language doc
    http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm
    MERGE INTO bonuses D
       USING (SELECT employee_id, salary, department_id FROM employees
       WHERE department_id = 80) S
       ON (D.employee_id = S.employee_id)
       WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
         DELETE WHERE (S.salary > 8000)
       WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
         VALUES (S.employee_id, S.salary*.01)
         WHERE (S.salary <= 8000);

  • ORA-20001: Error fetching column value: ORA-06502: PL/SQL: numeric or value

    I have an application made in devlopment which is working fine and i jsut migrated it to production but when i am running one of the page in the app in production it si throwing this error "ORA-20001: Error fetching column value: ORA-06502: PL/SQL: numeric or value error: character string buffer too small"... this report is ment for generating report.
    Now what i have done, i compared both dev and prod environment but i have not found and changes except this one. In the page of both the application in dev and prod under shared component under under template the region of breadcrum and report region is showing in different position. i dont think it a problem because of that i am facing problem.
    If anybody have idea how could i recitfy the prbs i will be highly thankful to you
    Regards
    Adi

    friends i have seen where the error is coming but i am unable to trace out how to increase the size of lov which i have made.
    when i am taking display as select list(named lov) it is throwing me the error "ORA-20001: Error fetching column value: ORA-06502: PL/SQL: numeric or value error: character string buffer too small" but if i am taking display as "popup lov(named lov)" under tablular form element under one of the column in the report, it is working properly. but not shwoing the report the way we want it to show. For that reason i want to increase the size of the love which i have made.

Maybe you are looking for

  • How do I make a pulldown list (for a form) - which componant is best?

    I'm looking to make one of my text fields a pull down list - but can't find a CS3 tutorial. I was able to figure out how to configure the "combo box" component to make my pull down list - but I the component has no VAR box (in the properties or param

  • How to block spam sms in iPhone for India? Any solution?

    I get far more annoyed with text message spam than I do with email spam. My iPhone (unlocked) dings every time I receive a text message, and I check it as soon as I can. I really, really resent the intrusion when it's spam. And of course there's the

  • How to back up photos ONLY?

    Hi there - I am running a 2011 MB Air with all software updated. I want to back up all my photos from iPhoto (and ONLY the photos, i.e. none of the rest of my data), onto a WD 1tb hard drive. Then I want to delete most of the photos from iPhoto, thus

  • Want to know abt hindi compactibility in SQL

    HI all, I have to run application in which records has to be saved in hindi...when i have to save it it is ok ..but when i go for fetching these records..it gives junk character...any one plse help me abt this probs??????????

  • Multi-cam project crashing in FCP

    Hi, I'm cutting a multi-cam project and the system I'm cutting on keeps crashing - and it appears to be crashing just after the auto save. The project is a five camera shoot, all on XDCam EX3 35mbs 1080 / 25p (ingested into FCP, native clips are then