Accessing column clicked data value

I have a datagrid with an itemDoubleClick function. In the
function I can get the row and column that was clicked but cannot
figure out how to get the value stored in that cell.
Using the code..
datarequest.lastResult.MyData.answer[event.rowIndex] .d1
.. I can get to the value of the column bound to d1 in the
row clicked but I cannot find a way to get the value using the
value by referenceing event.columnIndex.
Using MyDataGrid.columns[event.columnIndex].dataField I can
get binding name but need somethin like getItemByName to retreive
the value.
Any suggestions?

If I understand you correctly, you can acess the selected
cell value like..
MyDataGrid.selectedItem."DataGridColumnID"

Similar Messages

  • Extraing Month part from date value in varchar column

    Guys,
    I have varchar2 column contains date value in the format '2013/10/03' and i want extract month part of it.
    Iam doing like this  TO_CHAR(TO_DATE(L_BATCH_DATE,'MM'))='10'   
    and it says 'not a valid month'.any ideas? and how to get that value?
    Cheers

    Hi,
      Is this are you trying.
    to_date --> we will use this function to inform oracle the date is in character mode with this format
         to_date('2013/10/03','yyyy/dd/mm')
    select to_char(to_date('2013/10/03','yyyy/dd/mm'),'mm') from dual;

  • Issue with using formatted date value column in order by clause...

    Hi,
    1) Through a function I am listing all the months in a year.
    like JAN-2007, FEB-2007,MAR-2007......
    2) i am comparing these values against a date value column in a table.
    And if there are no values in a particular period it will return a null value (simply to say, i am using an outer join)
    3) The issue.....
    When join both the queries then the order of the dates is not mainted .....
    My requirement is......
    Jan-2007 = 3
    Feb-2007 = 5
    Mar-2007 = null
    etc.....
    should be acheived.
    But I end up in the alphabetical order of the months....
    like
    Apr-2007 = 5
    Aug-2007 = 10
    etc.....
    Can anybody let me know how can i acheive my resultant output to be ordered by the date and not by character.
    When I use the date column in the order by I run into an error....
    saying....
    ORA-01858: a non-numeric character was found where a numeric was expected
    Its a kind of urgent...
    Any help is appreciated....
    KK

    When I use a outer join as follows....
    "and upper(to_char(a.task_planned_start_date,'mon-rrrr')) = d.period_name(+)"
    All the null periods are ending at the bottom.It's standard behavoiur.
    Seems, you need to sort by a.task_planned_start_date.
    Look below:
    SQL> select e.ename, ec.ename from emp e, emp_copy ec
      2  where e.empno = ec.empno(+);
    ENAME      ENAME
    SMITH      SMITH
    ALLEN
    WARD       WARD
    JONES
    MARTIN     MARTIN
    BLAKE
    CLARK      CLARK
    SCOTT
    KING       KING
    TURNER
    ADAMS      ADAMS
    JAMES
    FORD       FORD
    MILLER
    14 rows selected.
    SQL> select e.ename, ec.ename from emp e, emp_copy ec
      2  where e.empno = ec.empno(+)
      3  order by ec.ename
      4  /
    ENAME      ENAME
    ADAMS      ADAMS
    CLARK      CLARK
    FORD       FORD
    KING       KING
    MARTIN     MARTIN
    SMITH      SMITH
    WARD       WARD
    JAMES
    TURNER
    ALLEN
    MILLER
    BLAKE
    JONES
    SCOTT
    14 rows selected.
    SQL> select e.ename, ec.ename from emp e, emp_copy ec
      2  where e.empno = ec.empno(+)
      3  order by e.ename
      4  /
    ENAME      ENAME
    ADAMS      ADAMS
    ALLEN
    BLAKE
    CLARK      CLARK
    FORD       FORD
    JAMES
    JONES
    KING       KING
    MARTIN     MARTIN
    MILLER
    SCOTT
    SMITH      SMITH
    TURNER
    WARD       WARD
    14 rows selected.Rgds.

  • How to compare the date value with the date datatype column?

    Hi,
    I am executed a query to get output for the particular date in two different database.
    I got output in one db environment, but in the another environment i didnt get the output.
    APP_DECISION_DATE column contains date datatype
    ex:
    SQL> select DECISIONED_STAGE_ID,DECISIONED_STAGE_USER_ID from naap10_application where APP_DECISION_DATE = TO_DATE('23-JAN-07',
    'DD-MON-YY'); 2
    DECISIONED_STAGE_ID DECISIONED_STAG
    2006060106 SYSTEM
    DATABASE - II
    SQL> select DECISIONED_STAGE_ID,DECISIONED_STAGE_USER_ID from naap10_application where APP_DECISION_DATE=
    TO_DATE('31-JAN-2007','DD-MON-RRRR') and application_id=2007010028552;
    no rows selected
    in the same db i got the output while i used the TO_DATE(APP_DECISION_DATE)
    SQL> select DECISIONED_STAGE_ID,DECISIONED_STAGE_USER_ID from naap10_application where TO_DATE(APP_DECISION_DATE)=
    TO_DATE('31-JAN-2007','DD-MON-YYYY') and application_id=2007010028552; 2
    DECISIONED_STAGE_ID DECISIONED_STAG
    2006060113 SYSTEM
    is it necessary to use TO_DATE function while i am using the data datatype column in the WHERE CLAUSE?
    Thanks in advance.
    siva

    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?

  • Using Field/Column Date Value In Case Statement

    I have code that the first part works (the part that evaluates null). However, it appears the second part doesn't work. The error I get is:
    Data Value out of range
    Can you use the a table column value in a Case statement? What I'm trying to do is: where all mbr06..values are 12/31/9999, then null; if mbr06.. values are equal to or less than today's date, then put the value in mbr02.mbr02_cancel_proc_date..
    Note, the table MBR02 does have dates that go back as far as 11/17/1858..could that be an issue?
    Thanks for any assistance..
                cast((case
                when mbr06.mbr06_exp_date = to_date('31-dec-9999') then null
                when mbr06.mbr06_exp_date <= sysdate then mbr02.mbr02_cancel_proc_date

    The error is due to the CAST, not to the CASE.
    Cause: Value from cast operand is larger than cast target size.Post at least the whole cast ...
    Max
    http://oracleitalia.wordpress.com

  • Dsiplay data values and data lables in a stacked column chart

    Hi All
    Is there a way to display data values and data labels in a stacked column chart. Mouse over or display of labels in legends wont help. It has to be in the chart .
    Regards,
    anshul

    Hi Anshul,
    You can display either data value or data label in a stacked column chart by checking the Data Label Displaying Mode option under Format Chart->Data Values.
    You can also do the same by checking the same option under Format chart->Area Display->Data Values.
    I dont think you would be able to display both in a column chart whereas you would be able to do it in a pie chart.
    Hope this helps.
    Regards
    Sri Harsha

  • HTML Dataset - how to filter based on data values within columns

    I have had success with using the XML dataset and filtering based on user input (see javascript example below)
    <script type="text/javascript">     
    var ds2 = new Spry.Data.XMLDataSet("disciplinary_actions3.xml", "doh/disciplinary_actions2[type='<? echo($type) ?>'][name>='<? echo($name) ?>']");
    ds2.setColumnType("date-of-sanction", "date");
    </script>
    The XML dataset filters the results based on the type and name values within the XML dataset columns.
    I need to accomplish this type of filtering with an HTML table.  All that I have  been able to accomplish with the use of the in the rowselector (see example below)
    <script type="text/javascript">
    <!--  the setRowSelector filters by the class attribute on the row in the html table
    var ds4 = new Spry.Data.HTMLDataSet("disciplinary_physicians_htmldataset.php", "physician-list");
    ds4.setRowSelector("tr.<? echo($type) ?>");
    ds4.loadData();
    //-->
    </script>
    How can I filter the HTML dataset based on the data VALUES within the table columns and NOT the class or id or span or div,,,etc?
    Although my advanced dataselector within Dreamweaver CS4 has a column selector... I can't under or get it to work.
    Any assistance or direction is greatly appreciated.

    Hi Ron,
    According to your description, you want to pass the Terminal number that user logon to where clause without needing to create a userid table, right?
    As per my understanding, you need to add an additional table to store the user and corresponding terminal, so that you can filter the data to show the rows based on the user and corresponding terminal. Here are some blogs which describe dynamic security
    on tabular model, please see:
    http://blogs.msdn.com/b/himanshu1/archive/2013/03/02/implementing-dynamic-security-in-tabular-models.aspx
    http://www.bidn.com/blogs/ChrisSchmidt/ssas/4332/dynamic-security-in-tabular
    If this is not what you want, there is no other approach to pass the Terminal number that user logon to where clause without needing to create a userid table. Thank you for your understanding.
    Regards,
    Charlie Liao
    TechNet Community Support

  • Column with header data value

    Hi All.
    I have a control file which i need to add a column with header data value.
    example
    data file:
    123456;201303
    santiago;producto1;100
    santiago;producto2;200
    valparais;producto1;400
    valparais;producto3;900
    The control file skip the first column and load the three columns on the table, but, now i need to add other column with 201303 value constant of the first record and load it on the table.
    Then
    select * from table:
    santiago producto1 100 201303
    santiago producto2 200 201303
    valparais producto1 400 201303
    valparais producto3 900 201303
    How i do this in the control file?
    Regards!

    SCOTT@orcl_11gR2> host type test.dat
    123456;201303
    santiago;producto1;100
    santiago;producto2;200
    valparais;producto1;400
    valparais;producto3;900
    SCOTT@orcl_11gR2> host type test1.ctl
    options (load=1)
    load data
    infile test.dat
    replace
    into table onecol_onerow
    fields terminated by ';'
    trailing nullcols
    (filler1 filler, newcol)
    SCOTT@orcl_11gR2> host type test2.ctl
    options (skip=1)
    load data
    infile test.dat
    append
    into table test_tab
    fields terminated by ';'
    trailing nullcols
    (col1, col2, col3,
    newcol expression "(select newcol from onecol_onerow)")
    SCOTT@orcl_11gR2> create table onecol_onerow
      2    (newcol number)
      3  /
    Table created.
    SCOTT@orcl_11gR2> create table test_tab
      2    (col1   varchar2(15),
      3     col2   varchar2(15),
      4     col3   number,
      5     newcol number)
      6  /
    Table created.
    SCOTT@orcl_11gR2> host sqlldr scott/tiger control=test1.ctl log=test1.log
    SQL*Loader: Release 11.2.0.1.0 - Production on Mon May 6 10:46:44 2013
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    Commit point reached - logical record count 1
    SCOTT@orcl_11gR2> select * from onecol_onerow
      2  /
        NEWCOL
        201303
    1 row selected.
    SCOTT@orcl_11gR2> host sqlldr scott/tiger control=test2.ctl log=test2.log
    SQL*Loader: Release 11.2.0.1.0 - Production on Mon May 6 10:46:45 2013
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    Commit point reached - logical record count 4
    SCOTT@orcl_11gR2> select * from test_tab
      2  /
    COL1            COL2                  COL3     NEWCOL
    santiago        producto1              100     201303
    santiago        producto2              200     201303
    valparais       producto1              400     201303
    valparais       producto3              900     201303
    4 rows selected.

  • How to validate Date value in Text Column

    Hi All,
    I have entered DATE value in text item field(Char Data Type), Now how can i validate, the entered date is valid or not.
    Thanks in advance.

    Well, the easiest way would be to make the item of datatype DATE.
    Another possibility is to try to convert the given value to a date in the WHEN-VALIDATE-ITEM-trigger, like
    DECLARE
      dt DATE;
    BEGIN
      dt:=TO_DATE(:BLOCK.ITEM);
      -- if code comes here, the date is valid
    EXCEPTION
      WHEN OTHERS THEN
        -- seems to be no valid date
        MESSAGE('Error');
        RAISE FORM_TRIGGER_FAILURE;
    END;Edited by: Andreas Weiden on 19.12.2010 12:23

  • Date Picker Doesn't Like Retrieved or Typed In Date Values

    I have more than one Region on a page, so I retrieve the column values for a region this way:
    (On LOad, Before Header, Once per Page Visit)
    BEGIN
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT='''||:pick_date_format_mask||'''';
    FOR request_rec IN (SELECT dev_requested_ind,
    dev_requested_dttm,
    dev_analyst_seq,
    dev_completed_ind,
    dev_completed_dttm,
    dev_dba_seq,
    sit_requested_ind,
    sit_requested_dttm,
    sit_analyst_seq,
    sit_completed_ind,
    sit_completed_dttm,
    sit_dba_seq,
    uat_requested_ind,
    uat_requested_dttm,
    uat_analyst_seq,
    uat_completed_ind,
    uat_completed_dttm,
    uat_dba_seq,
    prd_requested_ind,
    prd_requested_dttm,
    prd_analyst_seq,
    prd_completed_ind,
    prd_completed_dttm
    FROM request_tbl
    WHERE request_seq = :p16_request_seq)
    LOOP
    :p16_dev_requested_ind := request_rec.dev_requested_ind;
    :p16_dev_requested_dttm := request_rec.dev_requested_dttm;
    :p16_dev_analyst_seq := request_rec.dev_analyst_seq;
    :p16_dev_completed_ind := request_rec.dev_completed_ind;
    :p16_dev_completed_dttm := request_rec.dev_completed_dttm;
    :p16_dev_dba_seq := request_rec.dev_dba_seq;
    :p16_sit_requested_ind := request_rec.sit_requested_ind;
    :p16_sit_requested_dttm := request_rec.sit_requested_dttm;
    :p16_sit_analyst_seq := request_rec.sit_analyst_seq;
    :p16_sit_completed_ind := request_rec.sit_completed_ind;
    :p16_sit_completed_dttm := request_rec.sit_completed_dttm;
    :p16_sit_dba_seq := request_rec.sit_dba_seq;
    :p16_uat_requested_ind := request_rec.uat_requested_ind;
    :p16_uat_requested_dttm := request_rec.uat_requested_dttm;
    :p16_uat_analyst_seq := request_rec.uat_analyst_seq;
    :p16_uat_completed_ind := request_rec.uat_completed_ind;
    :p16_uat_completed_dttm := request_rec.uat_completed_dttm;
    :p16_uat_dba_seq := request_rec.uat_dba_seq;
    :p16_prd_requested_ind := request_rec.prd_requested_ind;
    :p16_prd_requested_dttm := request_rec.prd_requested_dttm;
    :p16_prd_analyst_seq := request_rec.prd_analyst_seq;
    :p16_prd_completed_ind := request_rec.prd_completed_ind;
    :p16_prd_completed_dttm := request_rec.prd_completed_dttm;
    END LOOP;
    END;
    p16_dev_requested_dttm is defined as a Date Picker (use application format mask)
    The data source is a Date column called dev_requested_dttm. I haven't defined a format mask for it. (I have tried using &PICK_DATE_FORMAT_MASK..)
    The Application Format Mask is defined as a Subsitution String called
    PICK_DATE_FORMAT_MASK
    with a value of
    MM/DD/YYYY HH:MI AM
    The retrieved column value for p16_dev_requested_dttm looks fine, but when I click the date picker pushbutton, I get this message:
    Not Found
    The requested URL /pls/htmldb/wwv_flow_utilities.show_as_popup_calendar was not found on this server.
    Oracle-Application-Server-10g/10.1.2.0.0 Oracle-HTTP-Server Server at edwdev.dhhs.state.nh.us Port 7779
    I also get a line in my log file,
    /vg02lvol1/app/oracle/product/htmldb/Apache/Apache/logs/error_log.1133956800:
    [Wed Dec  7 16:23:43 2005] [error] [client 172.16.252.76] [ecid: 1133990623:172.17.96.35:1802:0:9870,0] mod_plsql: /pls/htmldb/wwv_flow_util
    ities.show_as_popup_calendar HTTP-404 ORA-01849: hour must be between 1 and 12\nORA-06512: at "FLOWS_020000.WWV_FLOW_UTILITIES", line 1801\n
    ORA-06512: at line 22\n
    This happens with both FireFox and Internet Explorer.
    Any ideas what's causing this?
    -F
    Message was edited by:
    Fred C Willingham

    Fred,
    Unfortunately, the answer is no to both of your questions.
    There is no way for you as a developer to control which date is highlighted in the popup calendar. It will always highlight the current day (if you're displaying a month that contains the current day). This is an interesting and prudent suggestion, and one which we'll consider for an upcoming release of HTML DB.
    With regards to your second point, that also is something we should consider for an upcoming release of HTML DB. This isn't impossible for us to do, it was just designed to work in the current fashion. If you look at the generated HTML for the Date Picker item on the page (not the popup calendar itself, but the page on which the item is rendered), we break out each element of the date value into discrete components. When we instead rely upon the user entered value, garbage or date values not conforming to the date format mask are easily entered. And the question is - what to do then? Raise an error immediately, still popup the calendar and show the current month, etc. So we've tried to be fairly strict about the date values and format masks for the popup calendar, hence the implementation you see.
    Thanks again for your comments.
    Joel

  • Adding virtual column: ORA-12899: value too large for column

    I'm using Oracle 11g, Win7 OS, SQL Developer
    I'm trying to add virtual column to my test table, but getting ORA-12899: value too large for column error. Below are the details.
    Can someone help me in this?
    CREATE TABLE test_reg_exp
    (col1 VARCHAR2(100));
    INSERT INTO test_reg_exp (col1) VALUES ('ABCD_EFGH');
    INSERT INTO test_reg_exp (col1) VALUES ('ABCDE_ABC');
    INSERT INTO test_reg_exp (col1) VALUES ('WXYZ_ABCD');
    INSERT INTO test_reg_exp (col1) VALUES ('ABCDE_PQRS');
    INSERT INTO test_reg_exp (col1) VALUES ('ABCD_WXYZ');
    ALTER TABLE test_reg_exp
    ADD (col2 VARCHAR2(100) GENERATED ALWAYS AS (REGEXP_REPLACE (col1, '^ABCD[A-Z]*_')));
    SQL Error: ORA-12899: value too large for column "COL2" (actual: 100, maximum: 400)
    12899. 00000 -  "value too large for column %s (actual: %s, maximum: %s)"
    *Cause:    An attempt was made to insert or update a column with a value
               which is too wide for the width of the destination column.
               The name of the column is given, along with the actual width
               of the value, and the maximum allowed width of the column.
               Note that widths are reported in characters if character length
               semantics are in effect for the column, otherwise widths are
               reported in bytes.
    *Action:   Examine the SQL statement for correctness.  Check source
               and destination column data types.
               Either make the destination column wider, or use a subset
               of the source column (i.e. use substring).When I try to select, I'm getting correct results:
    SELECT col1, (REGEXP_REPLACE (col1, '^ABCD[A-Z]*_'))
    FROM test_reg_exp;Thanks.

    Yes RP, it working if you give col2 size >=400.
    @Northwest - Could you please test the same w/o having a regex clause in col2?
    I doubt on the usage of a REGEX in this dynamic col case.
    Refer this (might help) -- http://www.oracle-base.com/articles/11g/virtual-columns-11gr1.php
    Below snippet from above link.... see if this helps...
    >
    Notes and restrictions on virtual columns include:
    Indexes defined against virtual columns are equivalent to function-based indexes.
    Virtual columns can be referenced in the WHERE clause of updates and deletes, but they cannot be manipulated by DML.
    Tables containing virtual columns can still be eligible for result caching.
    Functions in expressions must be deterministic at the time of table creation, but can subsequently be recompiled and made non-deterministic without invalidating the virtual column. In such cases the following steps must be taken after the function is recompiled:
    Constraint on the virtual column must be disabled and re-enabled.
    Indexes on the virtual column must be rebuilt.
    Materialized views that access the virtual column must be fully refreshed.
    The result cache must be flushed if cached queries have accessed the virtual column.
    Table statistics must be regathered.
    Virtual columns are not supported for index-organized, external, object, cluster, or temporary tables.
    The expression used in the virtual column definition has the following restrictions:
    It cannot refer to another virtual column by name.
    It can only refer to columns defined in the same table.
    If it refers to a deterministic user-defined function, it cannot be used as a partitioning key column.
    The output of the expression must be a scalar value. It cannot return an Oracle supplied datatype, a user-defined type, or LOB or LONG RAW.
    >
    Edited by: ranit B on Oct 16, 2012 11:48 PM
    Edited by: ranit B on Oct 16, 2012 11:54 PM

  • Access the X-axis value from Flash Chart

    Hi,
    Is there a way I can access the X-axis value from Flash Chart to populate a report in another page? My X-axis is not a direct column in the table it is computed in the query.
    X-axis is MON-YEAR computed from the Begin_Date column. I want to capture the MON-YEAR clicked by the user to populate a report for that Mon-Year.
    Here is my chart SQL.
    select 'f?p=&APP_ID.:18:&SESSION.:::::::' link,
    to_char( "VIEW"."BEGIN_DATE",'MON-YYYY') label,
    sum(decode(TYPE_Id,2,Value,0)) "Value-1",
    sum(decode(TYPE_Id,1,Value,0)) "Value-2"
    from "VIEW" where to_char( "VIEW"."BEGIN_DATE",'MON-YYYY')= to_Char(sysdate-100, 'MON-YYYY')
    group by to_char( "VIEW"."BEGIN_DATE",'MON-YYYY'),
    to_char( "VIEW"."BEGIN_DATE",'YYYY')
    order by to_char( "VIEW"."BEGIN_DATE",'YYYY')
    Any suggestions?
    Thanks

    Thanks Marco..
    I did the same thing. I found this info at Re: Charts and links
    in the forum.
    Thanks for the help again.
    Nimmi

  • How to access the Custom Data type variable given in Expression edit control To and From LabVIEW

    Hello, I would like to know how to access the custom data type variable given in the Espression Edit Control from LabVIEW and vice-versa
    Say, the FileGlobals.Reference_Handle (Custom Data Type Variable) contains the
    VISA I/O session (Which in turn contains VISA_DeviceName: String, Session: Number),
    Channel1: Number and
    Channel2: Number
    I am expecting the user to give FileGlobals.Reference_Handle as the input at the ExpressionEdit Control in the edit screen of the VI Call.
    I would like to know how to get the values of this custom data type to LabVIEW?
    Say, if I have the Cluster in LabVIEW like VISA I/O session (Deive Name and Session Number), Channel1 and Channel2
    how do i need to set this cluster to the Custom Data type variable in TestStand?
    Thanks and Regards
    Prakash 

    Hi,
    TestStand to LabVIEW: i didnt understand what you r trying to achieve. But if you are using references, Use Property nodes and Invoke nodes to achieve what you want in LabVIEW.
     LabVIEW to TestStand: check the image below: You need to click the button next to 'container'. I have used a cluster output in the VI.
    Hope this helps
    .......^___________________^
    ....../ '---_BOT ____________ ]
    ...../_==O;;;;;;;;_______.:/
    Attachments:
    1.JPG ‏187 KB

  • How to turn a string into a date value

    Hi All,
    What is the best way to approach a date sorting issue I have?
    A web service that I consume returns a date column in a string
    format. Thus when the user clicks the column to sort a data grid by
    that date value it sorts incorrectly.
    I realize I could put a sort() on the grid or convert the
    data somehow. I am hoping several people can give me what would be
    considered a "best practice" from a code readability and
    performance point of view.
    Thannks in advance for your thoughts on this issue.

    you dont have to convert anything just implement function and
    asign it to Sort object's "compareFunction" property
    The compare function must have the following signature:
    function [name](a:Object, b:Object, fields:Array=null):int
    This function must return the following
    * -1, if a should appear before b in the sorted sequence
    * 0, if a equals b
    * 1, if a should appear after b in the sorted sequence
    inside that function you might need a tmp conversion but
    overall that should be it
    for example (function can look like this :
    if a===b) return 0;
    if(myStringToDateConvertor(a) > myStringToDateConvertor(m)
    ) return 1;
    if(myStringToDateConvertor(a) < myStringToDateConvertor(m)
    ) return -1;
    return 0;
    (remember sortField also has has compareFunction property but
    you dont need that one).

  • Need to test if a column have unique values or not

    Hi all,
    in ETL process I need to check if some cols have unique values or not using sql or plsql.
    Suppose we need to load a big file data with external table initially and then test if values
    on one or more columns have unique values  in order to proceed with ETL process.
    What is the faster test I can execute to verify that a column have unique values or not?
    It's better for the ETL performance, use:
    a. techniques regard constraints like described on Ask tom forum
    "ENABLE NOVALIDATE validating existing data"
    (Ask Tom &amp;quot;ENABLE NOVALIDATE validating existing da...&amp;quot;)
    b. "simply" query on the data?
    like this:
    select count(count(*)) distinct_count,
             sum(count(*)) total_count,
             sum(case when count(*) = 1 then 1 else null end) non_distinct_groups,
             sum(case when count(*) > 1 then 1 else null end) distinct_groups
    from hr.employees a
    group by A.JOB_ID
    c. use analytics function?
    d. use some feature directly on external table?
    Bye in advance

    Here is the example to handling the errrs using LOG_ERRORS into concept. You will check this and let me know if any doubt you have
    DATAFILE:-
    1000,ANN,ZZ105
    1001,KARTHI,ZZ106
    1002,PRAVEEN,ZZ109
    1002,PARTHA,ZZ107
    1003,SATHYA,ZZ108
    1000,ANN,ZZ105
    ----- Original Table With unique constraints
    SQL> CREATE TABLE tab_uniqtest(student_id     NUMBER(10) UNIQUE,
                              student_name   VARCHAR2(15),
                                                      course_name    VARCHAR2(15)
      2    3    4
    Table created.
    ----- External table
    SQL> CREATE TABLE tab_extuniqtest(student_id     NUMBER(10),
      2                               student_name   VARCHAR2(15),
      3                                                  course_name    VARCHAR2(15)
      4                              )
      5  ORGANIZATION EXTERNAL
      6  (
      7  DEFAULT DIRECTORY ann_dir
      8  ACCESS PARAMETERS
      9  (
    10    RECORDS DELIMITED BY NEWLINE
    11    BADFILE 'tabextuniqtest_badfile.txt'
    12    LOGFILE 'tabextuniqtest_logfile.txt'
    13    FIELDS TERMINATED BY ','
    14    MISSING FIELD VALUES ARE NULL
    15    REJECT ROWS WITH ALL NULL FIELDS
    16    (student_id,student_name,course_name)
    17  )
    18  LOCATION ('unique_check.csv')
    19  )
    20  REJECT LIMIT UNLIMITED;
    Table created.
    ---- Error logging table to log the errors
    SQL> CREATE TABLE dmlerrlog_uniqtest(ORA_ERR_NUMBER$     NUMBER ,
      2                                 ORA_ERR_MESG$       VARCHAR2(2000),
      3                                 ORA_ERR_ROWID$      ROWID,
      4                                 ORA_ERR_OPTYP$      VARCHAR2(2),
      5                                 ORA_ERR_TAG$        VARCHAR2(4000),
      6                                 inserted_dt         VARCHAR2(50) DEFAULT TO_CHAR(SYSDATE,'YYYY-MM-DD'),
      7                                 student_id              VARCHAR2(10)
      8                                  );
    Table created.
    ---- Procedure to insert from external table
    SQL> CREATE OR REPLACE PROCEDURE proc_uniqtest
      2  AS
      3  v_errcnt NUMBER;
      4  BEGIN
      5      INSERT INTO tab_uniqtest
      6      SELECT * FROM tab_extuniqtest
      7      LOG ERRORS INTO dmlerrlog_uniqtest('PROC_UNIQTEST@TAB_UNIQTEST') REJECT LIMIT UNLIMITED;
      8      SELECT COUNT(1) into v_errcnt
      9      FROM dmlerrlog_uniqtest
    10      WHERE ORA_ERR_TAG$ = 'PROC_UNIQTEST@TAB_UNIQTEST';
    11       IF(v_errcnt > 0) THEN
    12       ROLLBACK;
    13      ELSE
    14        COMMIT;
    15       END IF;
    16      DBMS_OUTPUT.PUT_LINE ( 'Procedure PROC_UNIQTEST is completed with ' || v_errcnt || ' errors') ;
    17  EXCEPTION
    18   WHEN OTHERS THEN
    19    RAISE;
    20  END proc_uniqtest;
    21  /
    Procedure created.
    SQL> SET SERVEROUTPUT ON
    SQL> EXEC proc_uniqtest;
    Procedure PROC_UNIQTEST is completed with 2 errors
    PL/SQL procedure successfully completed.
    SQL> SELECT STUDENT_ID,ORA_ERR_MESG$ FROM dmlerrlog_uniqtest;
    STUDENT_ID                     ORA_ERR_MESG$
    1002                           ORA-00001: unique constraint (
                                   SCOTT.SYS_C0037530) violated
    1000                           ORA-00001: unique constraint (
                                   SCOTT.SYS_C0037530) violated

Maybe you are looking for