Commit isn't updating a database column

I've got an ADF/UIX application that has a Commit button. If added a column to the database, and have propagated the schema change through my model and view controller. The new text field displays the data in the database, but the Commit button doesn't update the database with any user changes. Changes in the original data fields are committed, but not the new field that I've added.
What do I need to modify in my ADF/UIX application so that the Commit button adds the new data field in it's update action?

Does it work in the application module tester?

Similar Messages

  • Update a database table column via EO

    Hi,
    I want to update a database table column via EO, but somehow the table column is not updated. Could you help if I miss anything?
    Here is my code:
    View SQL:
    select
    ,GoalSheetHeaderEO.srp_goal_header_id
    ,XL.MEANING
    ,GoalSheetHeaderEO.status_code
    ,GoalSheetHeaderEO.start_date GS_START_DATE
    ,GoalSheetHeaderEO.end_date GS_END_DATE
    ,GoalSheetHeaderEO.PERIOD_YEAR
    ,GoalSheetHeaderEO.LAST_UPDATED_BY
    ,GoalSheetHeaderEO.LAST_UPDATE_DATE
    ,GoalSheetHeaderEO.LAST_UPDATE_LOGIN
    ,'N' CHECKED
    from
    xxg2c_srp_goal_headers_all GoalSheetHeaderEO
    ,cn_comp_plans_all comp
    ,jtf_rs_salesreps rs
    ,jtf_rs_resource_extns rse
    ,xxg2c_lookups xl
    ,shr_strct_nodes nod
    ,g2c_goal_shr_emp_assignments_v emp
    CO:
    if (pageContext.getParameter("Update") != null){
    am.invokeMethod("updateGoalSheet");
    AM:
    public void deleteGoalSheet(){
    OAViewObject vo = (OAViewObject)getGoalSheetResultGAVO1();
    GoalSheetResultGAVORowImpl row = (GoalSheetResultGAVORowImpl) vo.first();
    while (row != null)
    if (selectFlag != null)
    if (selectFlag .equals("Y"))
    //row.setAttribute("GsStatusCode",Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row.setStatusCode(Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row = (GoalSheetResultGAVORowImpl) vo.next();
    getTransaction().commit();
    EO:
    public void setStatusCode(String value) {
    if (value.equals(Constants.GOAL_SHEET_STATUS_CODE_DEL)){
    String currentStatus = getStatusCode();
    if(!(currentStatus.equals(Constants.GOAL_SHEET_STATUS_CODE_INPROG)
    ||currentStatus.equals(Constants.GOAL_SHEET_STATUS_CODE_RDYAUD))){
    throw new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
    getEntityDef().getFullName(),
    getPrimaryKey(),
    "StatusCode",
    value,
    "xxg2c goaling",
    "DEBUG -- need message name"
    setAttributeInternal(STATUSCODE, value);
    thanks
    Lei

    Hi Vikram,
    It is just a type error. The delete is a soft delete to change the status to 'DEL'.
    And also the view object is hybrid view object.
    Complete View Object SQL:
    select
    nod.node_id
    ,nod.version_id
    ,emp.status_name
    ,rs.SALESREP_ID
    ,rse.source_name
    ,rse.source_email SRP_EMAIL_ID
    ,rse.source_number SRP_EMPLOYEE_NUMBER
    ,comp.name
    ,GoalSheetHeaderEO.srp_goal_header_id
    ,XL.MEANING
    ,GoalSheetHeaderEO.status_code
    ,GoalSheetHeaderEO.start_date GS_START_DATE
    ,GoalSheetHeaderEO.end_date GS_END_DATE
    ,GoalSheetHeaderEO.PERIOD_YEAR
    ,GoalSheetHeaderEO.LAST_UPDATED_BY
    ,GoalSheetHeaderEO.LAST_UPDATE_DATE
    ,GoalSheetHeaderEO.LAST_UPDATE_LOGIN
    ,DECODE(GoalSheetHeaderEO.PERIOD_YEAR,(SELECT PERIOD_YEAR FROM GL_PERIODS WHERE PERIOD_SET_NAME = 'Fiscal Year' AND SYSDATE BETWEEN YEAR_START_DATE AND END_DATE),DECODE(GoalSheetHeaderEO.STATUS_CODE,'AUTH','copy_enabled','copy_disabled'),'copy_disabled') COPY_FLAG
    ,DECODE(GoalSheetHeaderEO.SRP_GOAL_HEADER_ID,null,'create_enabled',DECODE(GoalSheetHeaderEO.status_code,'AUTH','create_enabled','create_disabled')) CREATE_FLAG
    ,'N' CHECKED
    from
    xxg2c_srp_goal_headers_all GoalSheetHeaderEO
    ,cn_comp_plans_all comp
    ,jtf_rs_salesreps rs
    ,jtf_rs_resource_extns rse
    ,xxg2c_lookups xl
    ,shr_strct_nodes nod
    ,g2c_goal_shr_emp_assignments_v emp
    public void updateGoalSheet(){
    OAViewObject vo = (OAViewObject)getGoalSheetResultGAVO1();
    GoalSheetResultGAVORowImpl row = (GoalSheetResultGAVORowImpl) vo.first();
    while (row != null)
    if (selectFlag != null)
    if (selectFlag .equals("Y"))
    //row.setAttribute("GsStatusCode",Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row.setStatusCode(Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row = (GoalSheetResultGAVORowImpl) vo.next();
    getTransaction().commit();
    thanks for the help.
    Lei

  • Error in updating custom database table using UPDATE SET Command

    Hi,
    I developed an automated collection system program in one of our clients simulating FBE1 (Payment Advice Creation) and F-28 (Posting of Incoming Payments) transaction codes. Upon posting, we encountered an error in PRD server wherein, for some of the posted items, the STATUS field in our custom table was not successfully updated. We tried to reverse the clearing document and debug the program. Upon posting, we were able to successfully update the status. We could not simulate the error in QAS since all the postings in QAS were successful and all status' relating to these postings were updated as well. We tried posting multiple times and the program seems to be working fine. In PRD, this behavior is just random and there is no specific pattern as to how the error occured. Provided below is the code I used for updating custom table ZFIACSF28. The STATUS field should be equal to '4' once the posting is successful. We are not sure if this is a database related issue. 7 users are authorized to do the postings in PRD and they are using the same user account.
    CODE:
      CALL TRANSACTION 'F-28' USING gt_bdcdata
                              MODE   'E'
                              UPDATE 'S'
                              MESSAGES INTO gt_messtab.
      READ TABLE gt_messtab INTO wa_messtab WITH KEY msgtyp = 'S'
                                                     msgnr  = '312'.
      IF sy-subrc EQ 0.
    update status for items cleared bearing the same OR Number*
        UPDATE zfiacsf28 SET status       = '4'
                             zsapdocument = wa_messtab-msgv1(10)
                             zruntime     = sy-uzeit
                             zrundate     = sy-datum
                       WHERE zor          = gv_zor
                       AND   customer     = gv_customer.
        COMMIT WORK.
    ENDIF.

    Hi,
    it's not possible that status isn't updated in zfiacsf28 while date and time are updated there, because it's hard coded.
    There must be other programs that also change your table zfiacsf28 and maybe clear those fields. Maybe the key fields zor and customer cannot provide  duplicate access, what is the meaning of field zor ?
    Please check the where used list of table zfiacsf28 to find other update programs.
    Regards,
    Klaus

  • Checking for two database columns is null

    hi all,
    i am using Forms [32 Bit] Version 6.0.8.24.1 (Production)
    i have two questions.
    i have database multi record block and fields like code,name,email,p_email,notes
    1. if the senario email and p_email both cannot be null
    so in when-validate-record i have written like
    if email is null and p_email is null then
      raise form_trigger_failure;
    end if;what i am doing is correct?
    2. if i enter code and name and close the form the form is not asking for commit simply close window is appearing with 'yes' and 'no' option. but if i enter name,code and any of field(email or p_email) then its asking for commit.
    my question is why such behaviour is this is because of w-v-r?
    but if i update(code and name)alone then the change is reflecting.
    Please clarify my doubts.
    Thanks..
    Edited by: GD on Apr 10, 2011 5:40 AM

    hi,
    i have written the below code in w-v-r trigger and its firing accordingly
    if email is null and p_email is null then
      raise form_trigger_failure;
    end if;but in the same i have written the code as below but there is no impact
    if email is not null and p_email is not null then
       set_item_property('code',update_allowed,property_false);
    else
       set_item_property('code',update_allowed,property_true);
    end if;in my second code the trigger is firing after i leave the record, which is of no use(still i can update the code column),
    but in my first code form_trigger_failure has been raise if the two colulmns are null(for the same record)
    my question is why its behaving in two different manner,according to me the first code should not raise error for the same record as its behaving in second code, otherwise the second code should also fire for the same record(but its firing once i try to move to other record).
    Please clarify where i wrong? or is this is how trigger behaves?
    Thanks..

  • Solving "COMMIT business rules" on the database server

    Headstart Oracle Designer related white paper
    "CDM RuleFrame Overview: 6 Reasons to get Framed"
    (at //otn.oracle.com/products/headstart/content.html) says:
    "For a number of business rules it is not possible to implement these in the server
    using traditional check constraints and database triggers. Below you can find two examples:
    Example rule 1: An Order must have at least one Order Line ..."
    But, one method exists that allows solving "COMMIT rules" completely on the database level.
    That method consists of the possibility of delaying the checking of the declarative constraints (NOT NULL, Primary Key, Unique Key, Foreign Key, Check Constraints) until the commit
    (that method was introduced first in the version 8.0.).
    E.g. we add the field "num_emps" to the DEPT table, which always has the value of the number
    of the belonging EMP rows and add DEFERRED CK which uses the values from that field:
    ALTER TABLE dept ADD num_emps NUMBER DEFAULT 0 NOT NULL
    UPDATE dept
    SET num_emps = (SELECT COUNT (*) FROM emp WHERE emp.deptno = dept.deptno)
    DELETE dept WHERE num_emps = 0
    ALTER TABLE dept ADD CONSTRAINT dept_num_emps_ck CHECK (num_emps > 0) INITIALLY DEFERRED
    Triggers that insure the solving of the server side "COMMIT rules" are fairly simple.
    We need a packed variable that is set and reset in the EMP triggers and those value
    is read in the bur_dept trigger (of course, we could have place the variable in the package
    specification and change/read it directly, thus not needing the package body,
    but this is a "cleaner" way to do it):
    CREATE OR REPLACE PACKAGE pack IS
    PROCEDURE set_flag;
    PROCEDURE reset_flag;
    FUNCTION dml_from_emp RETURN BOOLEAN;
    END;
    CREATE OR REPLACE PACKAGE BODY pack IS
    m_dml_from_emp BOOLEAN := FALSE;
    PROCEDURE set_flag IS
    BEGIN
    m_dml_from_emp := TRUE;
    END;
    PROCEDURE reset_flag IS
    BEGIN
    m_dml_from_emp := FALSE;
    END;
    FUNCTION dml_from_emp RETURN BOOLEAN IS
    BEGIN
    RETURN m_dml_from_emp;
    END;
    END;
    CREATE OR REPLACE TRIGGER bir_dept
    BEFORE INSERT ON dept
    FOR EACH ROW
    BEGIN
    :NEW.num_emps := 0;
    END;
    CREATE OR REPLACE TRIGGER bur_dept
    BEFORE UPDATE ON dept
    FOR EACH ROW
    BEGIN
    IF :OLD.deptno <> :NEW.deptno THEN
    RAISE_APPLICATION_ERROR (-20001, 'Can''t change deptno in DEPT!');
    END IF;
    -- only EMP trigger can change "num_emps" column
    IF NOT pack.dml_from_emp THEN
    :NEW.num_emps := :OLD.num_emps;
    END IF;
    END;
    CREATE OR REPLACE TRIGGER air_emp
    AFTER INSERT ON emp
    FOR EACH ROW
    BEGIN
    pack.set_flag;
    UPDATE dept
    SET num_emps = num_emps + 1
    WHERE deptno = :NEW.deptno;
    pack.reset_flag;
    END;
    CREATE OR REPLACE TRIGGER aur_emp
    AFTER UPDATE ON emp
    FOR EACH ROW
    BEGIN
    IF NVL (:OLD.deptno, 0) <> NVL (:NEW.deptno, 0) THEN
    pack.set_flag;
    UPDATE dept
    SET num_emps = num_emps - 1
    WHERE deptno = :OLD.deptno;
    UPDATE dept
    SET num_emps = num_emps + 1
    WHERE deptno = :NEW.deptno;
    pack.reset_flag;
    END IF;
    END;
    CREATE OR REPLACE TRIGGER adr_emp
    AFTER DELETE ON emp
    FOR EACH ROW
    BEGIN
    pack.set_flag;
    UPDATE dept
    SET num_emps = num_emps - 1
    WHERE deptno = :OLD.deptno;
    pack.reset_flag;
    END;
    If we insert a new DEPT without the belonging EMP, or delete all EMPs belonging to a certain DEPT, or move all EMPs of a certain DEPT, when the COMMIT is issued we get the following error:
    ORA-02091: transaction rolled back
    ORA-02290: check constraint (SCOTT.DEPT_NUM_EMPS_CK) violated
    Disvantage is that one "auxiliary" column is (mostly) needed for each "COMMIT rule".
    If we'd like to add another "COMMIT rule" to the DEPT table, like:
    "SUM (sal) FROM emp WHERE deptno = p_deptno must be <= p_max_dept_sal"
    we would have to add another column, like "dept_sal".
    CDM RuleFrame advantage is that it does not force us to add "auxiliary" columns.
    We must emphasize that in real life we would not write PL/SQL code directly in the database triggers, but in packages, nor would we directly use RAISE_APPLICATION_ERROR.
    It is written this way in this sample only for the code clarity purpose.
    Regards
    Zlatko Sirotic

    Zlatko,
    You are right, your method is a way to implement "COMMIT rules" completely on the database level.
    As you said yourself, disadvantage is that you need an extra column for each such rule,
    while with CDM RuleFrame this is not necessary.
    A few remarks:
    - By adding an auxiliary column (like NUM_EMPS in the DEPT table) for each "COMMIT rule",
    you effectively change the type of the rule from Dynamic (depending on the type of operation)
    to a combination of Change Event (for updating NUM_EMPS) and Static (deferred check constraint on NUM_EMPS).
    - Deferred database constraints have the following disadvantages:
    When something goes wrong within the transaction, then the complete transaction is rolled back, not just the piece that went
    wrong. Therefore, it becomes more important to use appropriate commit units.
    There is no report of the exact row responsible for the violation nor are further violations either by other rows or of other
    constraints reported.
    If you use Oracle Forms as a front end application, the errors raised from deferred constraints are not handled very well.
    - CDM discourages the use of check constraints. One of the reasons is, that when all tuple rules are placed in the CAPI,
    any violations can be reported at the end of the transaction level together with all other rule violations.
    A violated check constraint would abort the transaction right away, without the possibility of reporting back other rule violations.
    So I think your tip is a good alternative if for some reason you cannot use CDM RuleFrame,
    but you'd miss out on all the other advantages of RuleFrame that are mentioned in the paper!
    kind regards, Sandra

  • Nsert/Update and Add Column at the same Table and at the "same" Time

    Hello,
    I want Insert/Update and Add Column at the same Table and at the "same" Time but in different sessions.
    Example:
    At first the "insert/update" statement:
    Insert into TestTable (Testid,Value) values (1,5105);
    After that the "add" statement:
    Alter table TestTable add TestColumn number;
    - sadly now I get the message: ORA-00054: resource busy and acquire with NOWAIT specified
    "insert/update" statement:
    Insert into TestTable (Testid,Value) values (2,1135);
    After that the execute commit.
    I don't know when the first session set the commit statement so I want that the DB the "Alter Table..." statement execute if it's possible.
    If it's possible I want to save a repeat loop with the "Alter Table..." statemtent.
    Thanks for ideas

    Well I want to walk in the rain without and umbrella and still stay dry, but it ain't gonna happen.
    You can't run a DDL statement against a table with transactions pending. Session 2 has to wait until session commits or rollbacks (or until the session is killed). That's just the way it is.
    This makes sense if you think about it. The data dictionary has to be consistent across all sessions. If session 2 was allowed to change the table structure whilst session 1 has a pending transaction then the database is in an inconsistent state. This is easier to see if you consider the reverse situation - the ALTER TABLE statement run by session 2 does a DROP COLUMN TESTID rather than adding a column: now what should happen to session 1's INSERT statement? You have retrospectively invalidated a statement that was perfectly legal when it was executed.
    If it's possible I want to save a repeat loop with the "Alter Table..." statemtent.Fnord.
    Cheers, APC

  • VPD Update policy at column level

    Hi,
    I have a table abc and I have applied a policy for update. Now the user who has no access is unable to update the table abc. Can I just restrict the user from updating a specific column ( user_id column in the table abc), rather than restricting the user from updating all columns?
    Thanks.

    hi,
    You can use sec_relevant_cols parameter of the DBMS_RLS.ADD_POLICY procedure
    begin
    dbms_rls.add_policy (
    object_schema => 'SCOTT',
    object_name => 'EMP',
    policy_name => 'VPD_TEST_POLICY',
    function_schema => 'SCOTT',
    policy_function => 'TEST_VPD',
    statement_types => 'select, insert, update, delete',
    sec_relevant_cols => 'sal,comm');
    end;
    you can see this doc
    http://www.in-oracle.com/Oracle-DBA/DBA-I/vpd-virtual-private-database.php
    or
    You can also use views to enforce column-level security, showing only which columns in a table may be updated. For example, assume that you must design roles based a table where only managers may view or update the salary column of the employee table (column restriction).
    1 - You can grant the end-user access to only those columns you wish to update:
    grant update (col1, col2) on mytab to fred;
    2 - You might create a view with only those columns that you want to allow updates, the table appears to the end-user as-if it contains only those columns. By granting access only to that view (and not the base table), you can effectively implement column-level security and restrict which columns in a table may be changed.
    regards,
    Edited by: dataseven on 04.Eki.2012 23:22

  • Re: [iPlanet-JATO] Finding the database column length

    This is the technique I would recommend. If you'd like to wrap this
    mechanism up in the model class itself, create a subclass of QueryModelBase
    that provides such a method and use that as the base class for all your
    QueryModels.
    Todd
    ----- Original Message -----
    From: "Craig V. Conover" <craig.conover@S...>
    Sent: Friday, October 19, 2001 12:15 PM
    Subject: Re: [iPlanet-JATO] Finding the database column length
    Chidu,
    The result set that you get back is a JDBC ResultSet, not a "JATO" resultset. In ND, everything was wrapped in a "spider" data
    structure, and therefore, difficult to get to the underlying datastructure, in many cases. In some case ND made it easier to do
    certain things, and in other ways, made it more difficult or impossible(like seeing the SQL for an insert, update, delete).
    >
    Anyway, looking at the java.sql package, you can do this.
    java.sql.ResultSet rs = <jata-model>.getResultSet();
    java.sql.ResultSetMetaData rsMeta = rs.getMetaData();
    // not sure if this is what you need, but it was the closest thing I couldfind
    int colSize = rsMeta.getColumnDisplaySize(int column);
    There are numerous other methods in the ResultSetMetaData interface thatmay be of use as well.
    >
    c
    chidusv@y... wrote:
    Hi,
    How do I find out the length of a database column in a data model? In
    NetDynamics, we can do dataobject.getDataField(<field
    name>).getColumnLength(). Is it possible to achieve this in JATO
    without using a resultset?
    Thanks,
    Chidu.
    For more information about JATO, please visit
    http://developer.iplanet.com/tech/appserver/framework/index.jsp
    >>
    >>
    >>
    >>
    >
    >
    >
    For more information about JATO, please visit
    http://developer.iplanet.com/tech/appserver/framework/index.jsp
    >
    >
    >
    >
    >
    >
    >

    This is the technique I would recommend. If you'd like to wrap this
    mechanism up in the model class itself, create a subclass of QueryModelBase
    that provides such a method and use that as the base class for all your
    QueryModels.
    Todd
    ----- Original Message -----
    From: "Craig V. Conover" <craig.conover@S...>
    Sent: Friday, October 19, 2001 12:15 PM
    Subject: Re: [iPlanet-JATO] Finding the database column length
    Chidu,
    The result set that you get back is a JDBC ResultSet, not a "JATO" resultset. In ND, everything was wrapped in a "spider" data
    structure, and therefore, difficult to get to the underlying datastructure, in many cases. In some case ND made it easier to do
    certain things, and in other ways, made it more difficult or impossible(like seeing the SQL for an insert, update, delete).
    >
    Anyway, looking at the java.sql package, you can do this.
    java.sql.ResultSet rs = <jata-model>.getResultSet();
    java.sql.ResultSetMetaData rsMeta = rs.getMetaData();
    // not sure if this is what you need, but it was the closest thing I couldfind
    int colSize = rsMeta.getColumnDisplaySize(int column);
    There are numerous other methods in the ResultSetMetaData interface thatmay be of use as well.
    >
    c
    chidusv@y... wrote:
    Hi,
    How do I find out the length of a database column in a data model? In
    NetDynamics, we can do dataobject.getDataField(<field
    name>).getColumnLength(). Is it possible to achieve this in JATO
    without using a resultset?
    Thanks,
    Chidu.
    For more information about JATO, please visit
    http://developer.iplanet.com/tech/appserver/framework/index.jsp
    >>
    >>
    >>
    >>
    >
    >
    >
    For more information about JATO, please visit
    http://developer.iplanet.com/tech/appserver/framework/index.jsp
    >
    >
    >
    >
    >
    >
    >

  • Update a single column of a table

    Hi Champs,
    I want to update a single column of table PA0000.
    Following is ABAp code I am using:
    UPDATE pa0000 SET massn = wa_upd_actn71-massn
                       WHERE pernr = wa_upd_actn71-pernr AND
                              massn = c_crct_entry.
    where in current scenario wa_upd_actn71-massn = 54,
                                         wa_upd_actn71-pernr = 10005092,
                                         c_crct_entry = 71.
    But this code is not working and note updating the DB table PA0000.
    Can you help me out?
    Edited by: Nishant Khimesra on Apr 7, 2009 2:00 PM
    Edited by: Nishant Khimesra on Apr 7, 2009 2:00 PM

    hiii,
    If u want to update it thr program then write the query as update <dbtablename> set fld = value where <condn>. make sure that the values u pass are converted as per the values in database.
    2nd way is goto se16n
    specify table name and then enter &sap_edit on command line. sap editing function will be edited. specify the filter parameters on the field and then execute the transaction. u can change thd data instantly as the data appears in editable alv.
    Regards,
    Anil N.

  • How do I null out an item based on a database column before display?

    I am using Apex 3.2
    I have an item that is based on database column. My customer wants me to "blank out" the item before it is displayed so the user will have to enter a new value in place of the one that is in the database.
    I have tried using a "before region" calculation to set the item to NULL. I can see the value getting set in the debug after the row fetch has occurred, but when the item is displayed, it contains the value from the database, not my calculated valuie.
    I also tried using an unsourced text field and then doing an after submit calculation to set the value of the database column item from there, but no luck that way either.
    Also tried clearing the item cache, but I think that happens way too early.
    There must be a simple way to do this..
    Any suggestion?

    No problem user486652 (name?),
    Yes, the $s function is one of ApEx's built-in's - see the ApEx documentation under API Reference, Javascript API's, and you'll find a wealth of built-in functions that do all sorts of things. For Javascript in general, take a look at www.w3schools.com for some really good tutorial and reference material - I use it constantly.
    Ok, so you want to set the browser field to empty after the page loads. Since this is a page event, it isn't something that will fire for a form field element so you don't want the code there. In ApEx 3.2, edit the attributes for the page, and you'll see a setting called "HTML Body Attribute". You'll see a helpful bullet note below the setting saying this is the place to add onload events. The proper syntax will be:
    onload="$s('P2_REMEDY_TICKET', '');"Once ApEx puts everything together and the page renders, this code will tell the browser to run that $s function after the page loads.
    But be aware - if you take a look at the help for that setting, you'll see that it mentions that this will only work if your page template includes the #ONLOAD# substitution string. Not sure if all ApEx-supplied page templates already have #ONLOAD#, but every one I've used does. If your code still doesn't work, check your page tempate. In the Definition region, under Header, you should see a body tag with something like:
    <body #ONLOAD#>...
    ...If that's there, your page template supports the HTML Body Attribute. If your body tag doesn't have an #ONLOAD#, add it.
    Hope this helps,
    John
    If you find this information useful, please mark the post "helpful" or "correct" so that others may benefit as well.*

  • SQL to find a value in a database column

    Hi All,
    I need to write a pl/sql block to find a given value in any database column.
    Is there a written function or program which I could use.
    Requirement is to see which columns in which table has the value 'ABCD123' in whole database
    Thanks,
    S

    NOT TESTED
    declare
      seeking varchar2(30) := 'ABCD123';
    begin
      create table result_table as
      select owner,table_name,column_name,cast(null as varchar2(30)) column_value
        from all_tab_cols
       where 1 = 0;
      for r in (select owner,table_name,column_name
                  from all_tab_cols
                 where data_type = 'VARCHAR2'
                   and data_length >= length(seeking)
      loop
        execute immediate 'insert into result_table ' ||
                          'select ' || r.owner || ',' || r.table_name || ',' || r.column_name || ',''' || seeking || '''' ||
                          '  from dual ' ||
                          ' where exists(select null ' ||
                          '                from ' || r.owner || '.' || r.table_name ||
                          '               where ' || r.column_name || ' = ''' || seeking || '''' ||
      end loop;
      commit;
    end;Regards
    Etbin

  • Updating a database using EJB Inheritance

    I am new to EJB's, so please forgive my ignorance. I creating the following classes that inherit from each other along with a method to update my database:
    @Entity
    @Inheritance(strategy = InheritanceType.JOINED)
    @DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.STRING)
    public abstract class ObjectA implements java.io.Serializable {
         protected String name;
         protected String desc;
         protected String type;
    @Entity
    @DiscriminatorValue("OBJECTB")
    public class ObjectB extends ObjectA implements java.io.Serializable {
         protected String str_b;
         public ObjectB(String name, String desc, String type, String str_b) {
              this.name = name;
              this.desc = desc;
              this.type = type;
              this.str_b = str_b;
    @Entity
    @DiscriminatorValue("OBJECTC")
    public class ObjectC extends ObjectB implements java.io.Serializable {
         private String str_c;
         public ObjectC(String name, String desc, String type, String str_b, String str_c) {
              this.name = name;
              this.desc = desc;
              this.type = type;
              this.str_b = str_b;
              this.str_c = str_c;
    public class MyFacade implements ServletContextListener {
         @PersistenceUnit(unitName="Pu")
        private EntityManagerFactory emf;
        @Resource
        private UserTransaction utx;
        public MyFacade() { }
        public void contextDestroyed(ServletContextEvent sce) {
            if (emf.isOpen()) emf.close();
        public void contextInitialized(ServletContextEvent sce) {
            ServletContext context = sce.getServletContext();
            context.setAttribute("MyFacade", this);
         public void updateObject(ObjectA obj) {
            EntityManager em = emf.createEntityManager();
            try{
                utx.begin();
                em.merge(obj);
                utx.commit();
            } catch(Exception exe){
                try {
                    utx.rollback();
                } catch (Exception e) {}
                throw new RuntimeException("Error updating obj", exe);
            } finally {
                em.close();
    }If I do the following:
         String name = "test name";
         String desc = "updating object c";
         String type = "OBJECTC";
         String b = "b";
         String c = "c";
         MyFacade myf = new MyFacade();
         ObjectC objC = new ObjectC(name, desc, type, b, c);
         myf.updateObject(objC);
         .....In my database, only the values associated with ObjectC get updated and nothing from ObjectA or ObjectB get updated in the database. Does the "merge" method not work on inheritance. How do I update my database using inheritance?
    Thanks!
    Message was edited by:
    FourierXForm

    did you only have ISQL for testing it?
    Can you debug the form and look, if someone happens - exceptions, ... ?
    after the update you can use
    message (SQL%ROWCOUNT); pause ;
    to look, how many records were updated

  • Encryptind and decrypting database column in oracle 10g

    hi guys...
    i am sai sandeep,i got a doubt how to encrypt a database column in oracle 10g..?
    i am using a table " emp_uid " ,and strtucture as follows,
    create table emp_uid(user_id varchar2(20),pwd varchar2(20));
    i need to encrypt a pwd column in the emp_uid.
    how to do it..?
    thanking u  advance.....

    Ok, here's a basic example...
    SQL> create table myusers (username varchar2(30), password varchar2(40));
    Table created.
    SQL> create or replace procedure add_user(username in varchar2
      2                                      ,password in varchar2) is
      3  begin
      4    insert into myusers (username, password)
      5      values (add_user.username
      6             ,dbms_crypto.hash(utl_raw.cast_to_raw(add_user.username||'!'||add_user.password)
      7                              ,dbms_crypto.hash_sh1)
      8             );
      9    commit;
    10  end;
    11  /
    Procedure created.
    SQL> exec add_user('Fred','Fr3ddy')
    PL/SQL procedure successfully completed.
    SQL> select * from myusers
      2  /
    USERNAME                       PASSWORD
    Fred                           E5C975DB4C0A1CF65683E36421A6305F09F4EA9A
    SQL> set serverout on;
    SQL> create or replace procedure loginuser(username in varchar2
      2                                       ,password in varchar2) is
      3    v_hash     varchar2(40);
      4    v_username varchar2(30);
      5  begin
      6    v_hash := dbms_crypto.hash(utl_raw.cast_to_raw(loginuser.username||'!'||loginuser.password), dbms_crypto.hash_sh1);
      7    select username
      8    into   v_username
      9    from   myusers
    10    where  username = loginuser.username
    11    and    password = v_hash;
    12    dbms_output.put_line('User: '||v_username||' logged in.');
    13  exception
    14    when no_data_found then
    15      dbms_output.put_line('Username/Password is not valid!');
    16  end;
    17  /
    Procedure created.
    SQL> exec loginuser('Fred','Freddy');
    Username/Password is not valid!
    PL/SQL procedure successfully completed.
    SQL> exec loginuser('Fred','Fr3ddy');
    User: Fred logged in.
    PL/SQL procedure successfully completed.
    Ideally you would do the hashing of the password inside the client side application so only the Hashed value goes over the network, but the above demonstrates the principle of using hashes to store passwords.  Because it's a one way algorithm, only a brute force method can be used to try and determine the original password.  There is no way to directly un-hash the value.  To check for a valid login, we don't retrieve the password and try to unhash it to compare against what the user has supplied, we actually take what the user has supplied and hash that in the same way and then compare the hashes.
    The point of including the username or some other data in the hashing process means that if two users have the same password, they will still have different hash values, so it won't be apparent they are the same passwords.  In my example, the point of putting another character between the concatenation of username and password is in case the username and password together would give the same result e.g.
    If we had one user "Fred" with password "Fr3ddy" then just concatenating the strings would give "FredFr3ddy".
    If we had another user "FredF" and he happened to choose a password "r3ddy" then just concatenating those would also give "FredFr3ddy"
    by introducing a known breaking character they would be different e.g. "Fred!Fr3ddy" and "FredF!r3ddy" and hence give different hash values.
    That's the basics of how passwords are stored for security.
    It would take a lot of processing power and brute force methods just to determine a single password for a single user when using hashing methods of security.
    With encryption, a brute force method could be used to find the decryption key, and once found that could be used to decrypt ALL the encyrpted data, hence it is less secure, especially when some clever person will no doubt have written the key down somewhere so they don't forget it.  With hashing there's no key to write down. 

  • Pre populate an item with source type="Database Column"

    Hello gurus,
    How can I pre populate an item with source used "Always, replacing any..." and source type="Database Column"?
    I have a form that creates/updates rows in a table and when creating a new row I want to populate some of the fields based on some parameters from the previous page. How can I achieve this?
    I tried adding a conditional process when PK is null and populate the expected fields, but in the browser they are not shown with those values, even if I look into the session I can see that they have the values assigned in the process ?!?!?!
    Thanks in advance,
    Florin

    Florin,
    Use the Default Value item attribute. In you case, set the Default Value Type to Static Text with Session State Substitutions and enter your item using the &P1_ITEM_NAME. syntax in the Default value text box.
    Thanks,
    - Scott -

  • How to update a database from an MS Excel

    Hi,
    I'm developing an application that would let the user view and edit the data from the database through Excel. My problem is, I need to update the database after the data was modified from MS Excel that doesn't need manual intervention.
    Thanks,
    mangyan

    At the risk of encouraging newbies to ask Microsoft specific questions on this Sun site...... the arch-enemy of Microsoft.....
    You can write a VB Macro to execute when the user clicks a button / control on the spreadsheet to say "Commit to database".
    Or maybe ask the user just before they close the database.
    VB has various database methods, like OpenDatabase.
    See examples in the Macro editor.
    Or if you want to give yourself an ounce of self respect, you could write a JSP application to input the values, and update a database via JDBC.
    regards,
    Owen

Maybe you are looking for