How to get table data column by column dynamically

Hi ,
first of all
i have something like this
cursor sys_cursor is
select * from sys.all_objects;
v_data varchar2(200);
fetch sys_cursor
into v_owner, v_object_name, v_subobject_name, v_object_id, v_data_object_id, v_object_type, v_created, v_last_ddl_time, v_time_stamp, v_status, v_temporary, v_generated, v_secondary;
v_data := v_owner || ' ' || v_object_name || ' ' || v_subobject_name || ' ' ||
v_object_id || ' ' || v_data_object_id || ' ' ||
v_object_type || ' ' || v_created || ' ' || v_last_ddl_time || ' ' ||
v_time_stamp || ' ' || v_status || ' ' || v_temporary || ' ' ||
v_generated || ' ' || v_secondary;
encrypt(v_data);
it is ok for "sys.all_objects" but i need to modify this for all tables
so , i need to know column names of table and type of it and value of it
then i need to get column values by one by and encrypt it.
i used dbms_sql and succeed to find column name and type
however , i couldnt get the values.i can't use dbms_sql.column_values because i find column type dynamically.
what can i do?
how can i get table data by row
and then for each row , i need to get values of columns by one by and encrypt those values.
any idea is appriciated.
thanks
Aykut

Dynamic SQL is the solution. Right from getting the column names, their data types to passing the string to encrypt function that you have.
You will need to handle datatypes like LONG, LOB etc... as they cannot be concatenated with strings.
Also, you need to manage dates and numbers.
Obviously this would be very complicated code.
Even if you decide to code the procedure to encrypt tables one by one, still you need to make this procedure dynamic to handle above situations.

Similar Messages

  • How to get max date in variable using  dynamic query

    Hi,
    the following code gets all dates from sourcetable i want only max date , so i thought max function can be added and it will work
    but still i have to create a table for one value(scalar) can get it in any other effeciant way.
    declare
    TYPE date_string IS TABLE OF VARCHAR(1000);
    date_obj date_string;
    BEGIN
    EXECUTE IMMEDIATE 'SELECT to_char('''||day1||'-'||month1||'-'||year1||''') FROM '||source_schema||'.'|| sourcetable ||'' bulk collect INTO date_obj;
    FOR indx IN date_obj.FIRST..date_obj.LAST loop
    dbms_output.put_line(
    date_obj(indx));
    END loop;
    DBMS_OUTPUT.PUT_LINE('Sample output');
    END;
    yours sincerely

    944768 wrote:
    the following code gets all dates from sourcetableNo it doesn't. What is the datatype of day1, month1 and year1? They cannot be DATE datatypes otherwise your TO_CHAR would fail with all that concatenation going on. And your TO_CHAR is returning a VARCHAR2 datatype... so you cannot say that it is getting all dates... because there are no DATE datatypes returned. It's getting a lot of strings, but certainly not DATE's.
    i want only max date , so i thought max function can be added and it will work You can use the MAX function on a DATE datatype, but not on strings (at least not in the way you intend it to work).
    Converting it to a DATE before doing the MAX will allow you to get the maximum date (assuming the date format is correct)
    EXECUTE IMMEDIATE 'SELECT max(to_date(to_char('''||day1||'-'||month1||'-'||year1||'''),''DD-MM-YYYY'')) FROM  '||source_schema||'.'|| sourcetable ||'' bulk collect INTO date_obj;Then you will find have the other issues...
    a) you are then going to be fetching your DATEs in to a collection of VARCHAR strings. (Not even VARCHAR2, very poor). This should be DATE datatype
    b) you are bulk collecting into a collection, when you are using MAX which will return a single value in your example
    And you really should address the design issues:
    c) why are day, month and year, not being stored in the database as a single DATE datatype in the first place
    d) why does your code not know the name of the table it's querying requiring the use of very poor dynamic SQL techniques.
    e) why are you loading data in a collection in expensive PGA memory... what can't you do in SQL that requires you to collect the data into memory first?

  • How to get specific data in a column.

    I have a column in a table where I have saved the addresses of files.
    As following
    Address_column
    D:\oracle\inventory_sheets.csv
    C:\oracle\sales\sheets.csv
    C:\Desktop\training_material\ presentation.pps.
    I want to get only the names of files which are coming at the end but there position is uncertain.
    Can anyone help me. How can I do this using SQL Query or any other way.
    Thanks.
    Suhaib Ahmed

    Something like this:
    SQL> WITH test_tab AS
      2       (SELECT 'D:\oracle\inventory_sheets.csv' file_loc
      3          FROM DUAL
      4        UNION ALL
      5        SELECT 'C:\oracle\sales\sheets.csv'
      6          FROM DUAL
      7        UNION ALL
      8        SELECT 'C:\Desktop\training_material\presentation.pps'
      9          FROM DUAL)
    10  SELECT SUBSTR (file_loc, INSTR (file_loc, '\', -1, 1) + 1) file_name
    11    FROM test_tab
    12  /
    FILE_NAME
    inventory_sheets.csv
    sheets.csv
    presentation.pps
    SQL> Regards,
    Jo

  • How can I Move data from one column to another in my access table?

    I have two columns, one that stores current month’s data and one that stores last month’s data. Every month data from column 2 (this month’s data) needs to be moved to column 1 that holds last month’s data. I then null out column 2 so I can accumulates this month’s data.
    I understand how to drop a column or add a column, how do I transfer data from one column to another.
    Here is my trial code:
    <cfquery name="qQueryChangeColumnName" datasource="#dsn#">
      ALTER TABLE leaderboard
      UPDATE leaderboard SET  points2 = points3
    </cfquery>
    Unfortunately, I get the following error:
    Error Executing Database Query.
    [Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][ODBC Microsoft Access Driver] Syntax error in ALTER TABLE statement.
    How can I transfer my data with the alter table method?

    I looked up the Access SQL reference (which is probably a
    good place to start when having issues with Access SQL), and
    it suggests you probably need a WHERE clause in there.
    I agree the documentation is a good place to start. But you should not need a WHERE clause here.
    Too few parameters. Expected 1.
    If you run the SQL directly in Access, what are the results? At the very least, it should provide a more informative error message..

  • How to get ALV Display with First column alone in sort

    How to get ALV Display with First column alone in sort

    HI,
    You can build Internal Table and send this to the parameter "IT_SORT".
    eg:
    "the sorting Internal Table structure is as whown below.
    DATA:  t_sort_info type slis_t_sortinfo_alv.
    "Build the Sort Internal Table
      t_sort_info-fieldname = 'CARRID'.
      t_sort_info-subtot = 'X'.
      append t_sort_info.
      t_sort_info-fieldname = 'FLDATE'.
      t_sort_info-subtot = 'X'.
      append t_sort_info.
    Then pass this "IT_SORT_INFO" table to the Function module "Reuse_alv_*". (Note send the body of the Internal table only like "<b>IT_SORT = IT_SORT_INFO[]</b>".
    Here i am making ALV output sorted on CARRID & FLDATE.
    You can specify only the First Column name for sorting.
    Regards,
    Manju
    Message was edited by:
            MANJUNATHA KS

  • How to get the data from multiple nodes to one table

    Hi All,
    How to get the data from multiple nodes to one table.examples nodes are like  A B C D E relation also maintained
    Regards,
    Indra

    HI Indra,
    From Node A, get the values of the attributes as
    lo_NodeA->GET_STATIC_ATTRIBUTES(  IMPORTING STATIC_ATTRIBUTES = ls_attributesA  ).
    Similarily get all the node values from B, C, D and E.
    Finally append all your ls records to the table.
    Hope you are clear.
    BR,
    RAM.

  • How to get the data from pcl2 cluster for TCRT table.

    Hi frndz,
    How to get the data from pcl2 cluster for tcrt table for us payroll.
    Thanks in advance.
    Harisumanth.Ch

    PL take a look at the sample Program EXAMPLE_PNP_GET_PAYROLL in your system. There are numerous other ways to read payroll results.. Pl use the search forum option & you sure will get a lot of hits..
    ~Suresh

  • How to get the data from Pooled Table T157E.

    Hi Experts,
    How to get the data from Pooled Table T157E.
    Any help.
    Thanks in Advance,
    Ur's Harsha.

    create some internal table similar to T157E and pass all data as per SPRAS.
    After that use internal table in your program as per the requirement.
    Regds,
    Anil

  • How to get fourthly row (row4) first column value (col1) in matrix

    Hi to all,
    In FMS, how to get fourthly row (row4) first column value (col1) in matrix in document.
    select $[$38.1.4]
    But it display the first row
    Please give me hint.
    Thank you

    Hi Eric,
    FMS may only apply to current row.  There is no way to get any other fixed row.
    Thanks,
    Gordon

  • How to get the data from multiple tabes into single table

    hi all,
    here i am having 10 data base tables,how to get the data into a single table.
    regards,
    subba reddy

    hi,
    non XI/PI related
    Regards,
    Michal Krawczyk

  • How to Get Missing Dates for Each Support Ticket In My Query?

    Hello -
    I'm really baffled as to how to get missing dates for each support ticket in my query.  I did a search for this and found several CTE's however they only provide ways to find missing dates in a date table rather than missing dates for another column
    in a table.  Let me explain a bit further here -
    I have a query which has a list of support tickets for the month of January.  Each support ticket is supposed to be updated daily by a support rep, however that isn't happening so the business wants to know for each ticket which dates have NOT been
    updated.  So, for example, I might have support ticket 44BS which was updated on 2014-01-01, 2014-01-05, 2014-01-07.  Each time the ticket is updated a new row is inserted into the table.  I need a query which will return the missing dates per
    each support ticket.
    I should also add that I DO NOT have any sort of admin nor write permissions to the database...none at all.  My team has tried and they won't give 'em.   So proposing a function or storable solution will not work.  I'm stuck with doing everything
    in a query.
    I'll try and provide some sample data as an example -
    CREATE TABLE #Tickets
    TicketNo VARCHAR(4)
    ,DateUpdated DATE
    INSERT INTO #Tickets VALUES ('44BS', '2014-01-01')
    INSERT INTO #Tickets VALUES ('44BS', '2014-01-05')
    INSERT INTO #Tickets VALUES ('44BS', '2014-01-07')
    INSERT INTO #Tickets VALUES ('32VT', '2014-01-03')
    INSERT INTO #Tickets VALUES ('32VT', '2014-01-09')
    INSERT INTO #Tickets VALUES ('32VT', '2014-01-11')
    So for ticket 44BS, I need to return the missing dates between January 1st and January 5th, again between January 5th and January 7th.  A set-based solution would be best.
    I'm sure this is easier than i'm making it.  However, after playing around for a couple of hours my head hurts and I need sleep.  If anyone can help, you'd be a job-saver :)
    Thanks!!

    CREATE TABLE #Tickets (
    TicketNo VARCHAR(4)
    ,DateUpdated DATETIME
    GO
    INSERT INTO #Tickets
    VALUES (
    '44BS'
    ,'2014-01-01'
    INSERT INTO #Tickets
    VALUES (
    '44BS'
    ,'2014-01-05'
    INSERT INTO #Tickets
    VALUES (
    '44BS'
    ,'2014-01-07'
    INSERT INTO #Tickets
    VALUES (
    '32VT'
    ,'2014-01-03'
    INSERT INTO #Tickets
    VALUES (
    '32VT'
    ,'2014-01-09'
    INSERT INTO #Tickets
    VALUES (
    '32VT'
    ,'2014-01-11'
    GO
    GO
    SELECT *
    FROM #Tickets
    GO
    GO
    CREATE TABLE #tempDist (
    NRow INT
    ,TicketNo VARCHAR(4)
    ,MinDate DATETIME
    ,MaxDate DATETIME
    GO
    CREATE TABLE #tempUnUserdDate (
    TicketNo VARCHAR(4)
    ,MissDate DATETIME
    GO
    INSERT INTO #tempDist
    SELECT Row_Number() OVER (
    ORDER BY TicketNo
    ) AS NROw
    ,TicketNo
    ,Min(DateUpdated) AS MinDate
    ,MAx(DateUpdated) AS MaxDate
    FROM #Tickets
    GROUP BY TicketNo
    SELECT *
    FROM #tempDist
    GO
    -- Get the number of rows in the looping table
    DECLARE @RowCount INT
    SET @RowCount = (
    SELECT COUNT(TicketNo)
    FROM #tempDist
    -- Declare an iterator
    DECLARE @I INT
    -- Initialize the iterator
    SET @I = 1
    -- Loop through the rows of a table @myTable
    WHILE (@I <= @RowCount)
    BEGIN
    --  Declare variables to hold the data which we get after looping each record
    DECLARE @MyDate DATETIME
    DECLARE @TicketNo VARCHAR(50)
    ,@MinDate DATETIME
    ,@MaxDate DATETIME
    -- Get the data from table and set to variables
    SELECT @TicketNo = TicketNo
    ,@MinDate = MinDate
    ,@MaxDate = MaxDate
    FROM #tempDist
    WHERE NRow = @I
    SET @MyDate = @MinDate
    WHILE @MaxDate > @MyDate
    BEGIN
    IF NOT EXISTS (
    SELECT *
    FROM #Tickets
    WHERE TicketNo = @TicketNo
    AND DateUpdated = @MyDate
    BEGIN
    INSERT INTO #tempUnUserdDate
    VALUES (
    @TicketNo
    ,@MyDate
    END
    SET @MyDate = dateadd(d, 1, @MyDate)
    END
    SET @I = @I + 1
    END
    GO
    SELECT *
    FROM #tempUnUserdDate
    GO
    GO
    DROP TABLE #tickets
    GO
    DROP TABLE #tempDist
    GO
    DROP TABLE #tempUnUserdDate
    Thanks, 
    Shridhar J Joshi 
    <If the post was helpful mark as 'Helpful' and if the post answered your query, mark as 'Answered'>

  • Native query. How to get the data...

    Hello everyone!
    I'm struggling to figure out how to extract data from particular columns from DB. Here is what I have...
    A table PersData with columns A, B, C, D and so forth. Also there is an entity represents this table called PersonalData.
    I need to get the data from A and C columns, but I still haven't found a solution how to do this. I know how to exctract an entire row from the PersData table by writing the following code...
    Query query = entityManager.createNativeQuery("SELECT * FROM 'PersData` ", PersonalData.class);
    List<PersonalData> qresult = query.getResultList();
    for(PersonalData item: qresult){
          System.out.println(item.getA());
          ........ But it's inefficient to get values of other columns at the same time.
    I guess that my query should be written smth like this...
    Query query = entityManager.createNativeQuery("SELECT A, C FROM `PersData` ");
    List<PersonalData> qresult = query.getResultList();
    for(PersonalData item: qresult){
          System.out.println(item.getA());
          .....But I got an error java.lang.ClassCastException when I do this for (PersonalData item: qresult). Actually, I understand why it's like this.
    Does anybody know how to get values just from two columns and then use them?

    Oops, my bad. it was about 2 paragraphs further
    down...
    "autoGeneratedKeys - a constant indicating whether
    auto-generated keys should be made available for
    retrieval using the method getGeneratedKeys;"Down in what?
    The following is the docs for the method you posted taken from here - http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String, int).
    executeUpdate
    public int executeUpdate(String sql,
    int autoGeneratedKeys)
    throws SQLException
    Executes the given SQL statement and signals the driver with the given flag about whether the auto-generated keys produced by this Statement object should be made available for retrieval.
    Parameters:
    sql - must be an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing
    autoGeneratedKeys - a flag indicating whether auto-generated keys should be made available for retrieval; one of the following constants: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
    Returns:
    either the row count for INSERT, UPDATE or DELETE statements, or 0 for SQL statements that return nothing
    Throws:
    SQLException - if a database access error occurs, the given SQL statement returns a ResultSet object, or the given constant is not one of those allowed
    Since:
    1.4
    I don't see the text you posted in there.
    At the very least there is at least a suggestion that an exception will be or could be thrown because the only way some databases can return an autogenerated key is via a result set.

  • How to add table data to an MSS PCR form?

    Hi All,
    I am new to Adobe Interactive Forms and I need to add a table of information to an existing form. This form is a customized version of an MSS PCR form Request for Termination. Currently the form fields are populated by an implementation of BADI QISR1. It is a copy of implementation HRWPC_PCR and uses the internal table special_data. All the fields currently on the form are single fields and I can see how they are populated. However I now want to add the contents of an internal table. I have read through the ISR cookbook but I cannot work out how to get this data onto the form and how or if it should be stored in the special_data table. The table (LOAN) has been added to the context and has 4 fields. Would anybody be able to provide some direction to me? Please let me know if I have not provided enough information.
    Thanks very much!
    Ashley

    Hello Ashley,
    you are already close to the solution. In BADI QISR1 you simply fill the
    table SPECIAL_DATA e.g.like
      fieldindex = 1
      fieldname = 'FIELD1'
      fieldvalue = 'Value1'
      fieldindex = <n>
      fieldname = 'FIELD1'
      fieldvalue = 'VALUE<n>'
    Then on the Adobe form layout (Adobe Designer), you have to use the table control XFO from the standard library. Here you have to bind then the corresponding column to FIELD1.
    Best regards,
    Simon

  • How to get least date value

    Hi
    How to get least date value if my data is like this,
    order_id date
    121 03-mar-12
    232 30-jan-10
    343 14-may-11
    I want to pic least date value(i.e. 03-mar-12) from the list
    can any one help me on this
    Thanks,
    Lakshman
    Edited by: kolipaka on Jun 29, 2012 4:21 PM

    Hi, Lakshman,
    kolipaka wrote:
    Hi
    How to get least date value if my data is like this,
    order_id date
    121 03-mar-12
    232 30-jan-10
    343 14-may-11
    I want to pic least date value(i.e. 03-mar-12) from the list
    can any one help me on this
    Thanks,
    Lakshman
    Edited by: kolipaka on Jun 29, 2012 4:21 PM30-Jan-2010 is the earliest (least) date in that data (assuming that's a DATE column, and all the dates are in the same century). To find the earliest date, you could say:
    SELECT  MIN (dt)    AS first_date
    FROM    table_x
    ;DATE is not a good column name, so I used DT instead.
    03-Mar-2012 is the date related to the least order_id. To find that, you could say
    SELECT  MIN (dt) KEEP (DENSE_RANK FIRST ORDER BY order_id)  AS dt_or_least_order_id
    FROM    table_x;If you wanted to find several columns from the row with the earliest order_id, you could do a Top-N Query , like this:
    WITH  got_r_num  AS
        SELECT  x.*
        ,       ROW_NUMBER () OVER (ORDER BY  order_dt)   AS r_num
        FROM    table_x  x
    SELECT  *    -- or list all columns except r_num
    FROM    got_r_num
    WHERE   r_num   = 1
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all the tables involved, and the results you want from that data.
    Explain, using specific examples, how you get those results from that data.
    Always say what version of Oracle you're using.
    See the forum FAQ {message:id=9360002}

  • How to get changed data in ALV in Web Dynpro for ABAP

    METHOD on_data_check .
    DATA:
        node_spfli                          TYPE REF TO if_wd_context_node,
        node_sflight                        TYPE REF TO if_wd_context_node,
        itab_sflight2                        TYPE if_display_view=>elements_sflight.
      node_spfli = wd_context->get_child_node( name = if_display_view=>wdctx_spfli ).
      node_sflight = node_spfli->get_child_node( name = if_display_view=>wdctx_sflight ).
      CALL METHOD node_sflight->get_static_attributes_table
        IMPORTING
          table = itab_sflight2.
    this code is ..get all data(changed and not changed)
    but i want get changed data only, not all data.
    how to get changed data?
    Edited by: Ki-Joon Seo on Dec 27, 2007 6:04 AM

    Hi,
    To get only the changed data in the ALV grid of a WD, you need to capture the "ON_DATA_CHECK" of the ALV grid.
    To this please do the following in the ALV initialization of the ALV table settings :
        lr_table_settings->set_data_check(
                IF_SALV_WD_C_TABLE_SETTINGS=>DATA_CHECK_ON_CELL_EVENT ).
    You may also do this:
        lr_table_settings->set_data_check(            IF_SALV_WD_C_TABLE_SETTINGS=>DATA_CHECK_ON_CHECK_EVENT)
    The above two ways would depend on when do you need to check for the changed data. If you want to check the data as soon as it is entered, then use the first method. Else, use the second method.
    You need to register an EVENT HANDLER for this event.(You may do this in your VIEW or Component Controller).
    In this Event handler, you would find an importing parameter R_PARAM which is a ref type of      IF_SALV_WD_TABLE_DATA_CHECK.
    The attribute T_MODIFIED_CELLS of this interface IF_SALV_WD_TABLE_DATA_CHECK will contain the modified cells of the ALV with the old & new values.

Maybe you are looking for