Oracle user defined errors

hi friends i defined lots of errors code in my plssql proc,func...
like
RAISE_APPLICATION_ERROR(-20322,'invalid username');but now application lots of error message and its looks to mixed. how can i define and manage errors?
thanks

ok, here's a very quick and rough example...
SQL> create or replace package pkg_err_handle is
  2    err_no_salary     exception; pragma exception_init(err_no_salary, -20001);
  3    err_no_department exception; pragma exception_init(err_no_department, -20002);
  4    err_invalid_bonus exception; pragma exception_init(err_invalid_bonus, -20003);
  5    --
  6    procedure raise_err(err_name in varchar2);
  7    --
  8    procedure log_err;
  9  end;
10  /
Package created.
SQL>
SQL> create or replace package body pkg_err_handle is
  2    procedure raise_err(err_name in varchar2) is
  3    begin
  4      case lower(err_name)
  5        when 'err_no_salary' then log_err; raise_application_error(-20001, 'Salary Must Be Entered', true);
  6        when 'err_no_deparment' then log_err; raise_application_error(-20002, 'Deparment Must Be Entered', true);
  7        when 'err_invalid_bonus' then log_err; raise_application_error(-20003, 'Bonus cannot be more than Salary', true);
  8      else log_err; raise_application_error(-20000, 'Undefined Error', true);
  9      end case;
10    end;
11    --
12    procedure log_err is
13    begin
14      -- here you would probably log to a table (preferably) or file.
15      dbms_output.enable(1000000);
16      dbms_output.put_line('Error Log: '||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE());
17    end;
18  end;
19  /
Package body created.
SQL> declare
  2    v_empno number := 7654;
  3    v_sal   number;
  4    v_bonus number;
  5  begin
  6    select sal, comm
  7    into v_sal, v_bonus
  8    from emp
  9    where empno = v_empno;
10    --
11    if v_bonus > v_sal then
12      pkg_err_handle.raise_err('err_invalid_bonus');
13    end if;
14    --
15    -- all is ok
16    --
17  exception
18    when pkg_err_handle.err_invalid_bonus then
19      -- handle or raise...
20      raise;
21  end;
22  /
Error Log:
declare
ERROR at line 1:
ORA-20003: Bonus cannot be more than Salary
ORA-06512: at line 20
SQL>You'd probably want to include more information in the raising of the error, perhaps including some internal reference that could be logged to indicate the place in the code the error was raised from etc.

Similar Messages

  • How do you use user defined error messages in Value Help?

    Hi,
    I'm currently working on a Modifiable Value Help Selector in Web Dynpro Java, and I want to use a user defined error message when I validate the values entered by a user. Currently, it's returning its default error message ("Character <string> does not match...").
    Since the project requires a different error message, is there a way to override the default error message and use my defined error message instead?
    Thanks!

    Hi Angelo,
    I am not sure why message area is showing both Custom and inbuilt messages but you can try the following:
    i guess you must be using reportContextAttribute exception for showing Error messages on the input fields as well.in that case you can disable the message area so messages will appear only on the Context level ie; on input fields.
    For other messages apart from validation messages you can enable the message area before reporting the exception.
    make sure the boolean context variable which will be used for enabling and disabling the message area should have Readonly property set as true.
    I am not sure whether this is the only solution for this but you can try and see if it works.
    Siddharth

  • Is there a LabView example in the use of user defined error codes?

    Specifically, I have a VI that tests four arrays of data against various high/low limits. I have pass/fail outputs for 18 tests. I'd like to combine these into an 'error out' cluster with appropriate error codes and messages, for which I've created an x-errors.txt file.
    My first question must be trival - how do I just set the 'status' bit of the error stream to let the general error handler then look up the error desription from the file?
    Secondly - I can't find an example of this in the technical resourses, amI missing something?
    Thanks,
    Mike
    Mike Evans
    TRW Conekt
    N.I. Alliance Member, UK
    http://www.Conekt.net

    There is no example program. There is extensive help on how to do this. Here's the basics.
    1) There are two ways to define user error codes in LV6.1. If you are using LV6.0 or earlier, only one method is possible.
    2) The 6.0 method involves wiring arrays of error codes and arrays of error code strings to the General Error Handler.vi. These codes will be used to explain any error code which is undefined in LV's internal error code database. Error codes reserved for users which are guaranteed not to be used by NI are from 5000 to 9999.
    3) The 6.1 method allows you to create a specially formatted error code file on disk that will be merged with the LV error code database each time LabVIEW launches. For help on this, go to LV's online help, and in t
    he Index tab, type
    "user-defined error codes, in text files"
    (without the quote marks)
    4) If you want to set an error into the error cluster, use the General Error Handler.vi again. Wire your error code value to the Error Code terminal (the leftmost-topmost corner terminal). Wire the name of your VI to the Error Source terminal, and wire "No Dialog" to the Type of Dialog terminal (left-side, near the bottom). The error code cluster that comes out of this VI will either be the error in (if one was set) or a new error code cluster with your error and the status bit set to TRUE.
    5) The attached demo is written in LV6.0.
    Attachments:
    Error_Demo.vi ‏37 KB

  • Issue in passing Oracle User Defined Types to PL SQL from Websphere Applica

    HI,
    I am facing an issue when trying to pass Oracle collection object(User Defined Types) from Java to PL SQL. The issue happens inside J2EE application which is running inside Websphere Application Server 6.x. My database is Oracle 10g and i am using ojdbc1.4.jar as thin driver.
    The issue is that when i pass the Oracle Object from java side, the attribute values of the collection objects at the Oracle PL SQL side is coming as empty. I have tried the same java code in a standalone application and it works fine. The issue happens only when the application is running inside WAS.
    Anybody has any idea how to pass Oracle User Defined Types from WAS 6.x server to Oracle PL SQL?

    Andy Bowes wrote:
    Hi
    I am using WebLogic 8.14 & Oracle 9i with thin JDBC driver.
    Our application needs to perform the same DB operation for every item in a Java Collection. I cannot acheive the required performance using the standard Prepare & Execute loop and so I am looking to push the whole collection to Oracle in a single invocation of a Stored Procedure and then loop on the database.
    Summary of Approach:
    In the Oracle database, we have defined a Object Type :
    CREATE OR REPLACE
    TYPE MYTYPE AS OBJECT
    TxnId VARCHAR2(40),
    Target VARCHAR2(20),
    Source VARCHAR2(20),
    Param1 VARCHAR2(2048),
    Param2 VARCHAR2(2048),
    Param3 VARCHAR2(2048),
    Param4 VARCHAR2(2048),
    Param5 VARCHAR2(2048),
    and we have defined a collection of these as:
    CREATE OR REPLACE
    TYPE MYTYPE_COLLECTION AS VARRAY (100) OF MYTYPE
    There is a stored procedure which takes one of these collections as an input parameter and I need to invoke these from within my code.
    I am having major problems when I attempt to get the ArrayDescriptor etc to allow me to create an Array to pass to the stored procedure. I think this is because the underlying Oracle connection is wrapped by WebLogic.
    Has anyone managed to pass an array to an Oracle Stored procedure on a pooled DB connection?
    Thanks
    AndyHi. Here's what I suggest: First please get the JDBC you want to work in a
    small standalone program that uses the Oracle thin driver directly. Once
    that works, show me the JDBC code, and I will see what translation if
    any is needed to make it work with WLS. Will your code be running in
    WebLogic, or in an external client talking to WebLogic?
    Also, have you tried the executeBatch() methods to see if you can
    get the performance you want via batches?
    Joe

  • 10g - cache, report contains oracle user defined function

    hi, experts,
    from http://obiee101.blogspot.com/2008/07/obiee-cache-management.html
    Reasons Why a Query is Not Added to the Cache:
    •Non-cacheable SQL element. If a SQL request contains Current_Timestamp, Current_Time, Rand, Populate, or a parameter marker then it is not added to the cache.
    •Non-cacheable table. Physical tables in the Oracle BI Server repository can be marked 'noncacheable'. If a query references any non-cacheable table then the query results will not be added to the cache.
    •Cache hit. In general, if the query gets a cache hit on a previously cached query, then the results of the current query are not added to the cache. The exception is query hits that are aggregate roll-up hits.
    •Result set is too big.
    Query is cancelled. This can happen by explicit cancellation from Oracle BI Presentation Services or the Administration Tool, or implicitly through timeout.
    •Oracle BI Server is clustered. Queries that fall into the ‘cache seeding’ family are propagated throughout the cluster. Other queries continue to be stored locally. Therefore, even though a query may be put into the cache on Oracle BI Server node 1, it may not be on Oracle BI Server node 2.
    I would like to know
    if the request (report on dashboard) calls an oracle user defined function,  can the cache be created and saved for this report?
    thank you very much!

    Hi stephen,
    if the request (report on dashboard) calls an oracle user defined function, can the cache be created and saved for this report?Yes,it is cached.....function defined in database is called in OBIEE is cached and saved.
    More information and example can be found here http://oraclebizint.wordpress.com/2007/09/10/oracle-bi-ee-10133-support-for-native-database-functions-and-aggregates/
    Hope it helps you.Check all other questions you posted are answered?
    By,
    KK

  • Page process: user defined error-message

    hi to everyone!
    i want to display a user-defined error-message, if for example a select in an anonymous PL/SQL block returns more than one row. i tried it with an user defined exception, but i get allways the success message... how can i do that?
    thanks for your help.
    bye,
    christian

    Hi,
    In the exception handler of your PL/SQL process use this :-
    apex_application.g_print_success_message := '<span style="color:red">Error message</span>';Regards
    Paul

  • User defined error management in variance calculation

    Dear Expert,
    I would like to change the message type for some messages in variance calculation. Path:  IMG/product cost controlling/cost object controlling/product by order/manufacturing order/periodic processing.  According to IMG documentation, the message type can be changed here. But I failed to edit the message and it seems not modifiable.  Can anyone reply on this? Thanks!
    BEST REGARDS
    Maggie
    Edited by: Qin Ou on Oct 27, 2009 6:36 AM

    Hi,
    I am able to change the message is the IMG Path:
    IMG/product cost controlling/cost object controlling/product by order/manufacturing order/ User defined Error Management /
    1, Specify User-Def. Msg Types for Preliminary Costing of Manufacture
    2, Assign Message to Responsible Area
    Regards,
    Sridhar Sha

  • Is there a range of error codes reserved for user defined error codes?

    I would like to create my own error codes for a CVI dll but I want to make sure I don't use error codes already defined for something else. Is there a range reserved for such use?
    Samee thing for warnings (errorcode > 0)
    Thanks

    I have never found a positive mention of a "safe" range of error codes available for user-defined error conditions, but I can suggest you some source of informations.
    First of all, every library has its specific list of error codes, usually listed in the relative include file. All these error codes are listed in the online help too (search for "error codes" in the index tab of the help).
    Second, GetGeneralErrorString () is a function that can be used to trap errors of the following libraries with a unique error function:
    User Interface Library
    Easy I/O instrument driver
    Toolbox instrument driver
    ActiveX Library
    DIAdem Connectivity Library
    .NET Library
    DataSocket instrument driver
    Network Variable Library
    Real-Time Utility Library
    TDM Streaming Library
    UDP Support Library
    This means that the error codes from this libraries do not overlap, so you could derive from its code some ranges not used by these libraries.
    Nevertheless, there is not a single function for error trapping: every library has its proper list of error codes and a function to decode them in human readable form, andthere is no guarantee that these ranges does not overlap. It's up to you to trap errors from every function in the proper way.
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Using stored procedure with Oracle user-defined types in database control

    Hi,
    I have a requirement where I need to call an Oracle Stored Proc which has IN and OUT parameters. OUT parameters are of user-defined types in Oracle packages.
    I am getting error while calling the Stored proc like below:
    Procedure:
    ==========
    create or replace
    PROCEDURE AA_SAM_TEST (
    col1 out types_aa.aa_tex_type ,
    col2 out types_aa.aa_tex_type ,
    col2 out types_aa.aa_num_type ) As
    Types:
    ======
    create or replace
    package types_aa as
    type aa_tex_type is table of varchar2(255) index by binary_integer;
    type aa_num_type is table of char index by binary_integer;
    end
    Wli Code:
    =========
    DB Control:
    ===========
    * @jc:sql statement="call AA_SAM_TEST(?,?,?)"
    void Call_AA_SAM_TEST(SQLParameter[] param) throws SQLException;
    JPD Code:
    =========
    param = new SQLParameter[3];
    Object param1 = new String();
    Object param2 = new String();
    Object param3 = new String();
    this.param[0] = new SQLParameter(param1 , Types.STRUCT, SQLParameter.OUT);
    this.param[1] = new SQLParameter(param2, Types.STRUCT, SQLParameter.OUT);
    this.param[2] = new SQLParameter(param3, Types.STRUCT, SQLParameter.OUT);
    database_Update.Call_AA_SAM_TEST(this.param);
    I am getting the following error...
    <Jul 24, 2007 6:47:42 PM IST> <Warning> <WLW> <000000> <Id=database_Update; Method=Ctrl_files.Database_Update.Call_AA_SAM_TEST(); Failure=java.sql.SQLException: ORA-06553: PLS-:
    ORA-06553: PLS-:
    ORA-06553: PLS-:
    ORA-06553: PLS-:
    ORA-06553: PLS-:
    ORA-06553: PLS-306: wrong number or typ
    ORA-06553: PLS-306: wrong number or types of arguments in call to 'AA_SAM_TEST'
    ORA-06553: PLS-306: wrong number or types of arguments in call to 'AA_SAM_TEST'
    Can anyone know how to specify OUT parameter of USer-Defined types while using a DB control to access a Stored Proc in Oracle.
    Any help is highly appreciated.
    Thanks

    Hi,
    I have similar problem. Have you already solved the issue?
    Thanks

  • How to convert Oracle User defined datatype to SQL Server 2014 using SSMA Version 6.0

    I am trying to convert Oracle 11g OE schema to SQL Server 2014, using SSMA version 6.0
    Getting an error in converting the Oracle View to SQL Server
    CREATE OR REPLACE VIEW OC_CUSTOMERS OF OE.CUSTOMER_TYP WITH OBJECT IDENTIFIER (customer_id) AS
    SELECT c.customer_id, c.cust_first_name, c.cust_last_name, c.cust_address,
               c.phone_numbers,c.nls_language,c.nls_territory,c.credit_limit,
               c.cust_email,
               CAST(MULTISET(SELECT o.order_id, o.order_mode,
                                   MAKE_REF(oc_customers,o.customer_id),
                                   o.order_status,
                                   o.order_total,o.sales_rep_id,
                                   CAST(MULTISET(SELECT l.order_id,l.line_item_id,
    l.unit_price,l.quantity,
    MAKE_REF(oc_product_information,
    l.product_id)
    FROM order_items l
    WHERE o.order_id = l.order_id)
                                        AS order_item_list_typ)
                             FROM orders o
                             WHERE c.customer_id = o.customer_id)
                    AS order_list_typ)
         FROM customers c
    *   SSMA error messages:
    *   O2SS0461: Conversion of object view is not supported.
    *   OF OE.CUSTOMER_TYP
    *      WITH OBJECT IDENTIFIER (customer_id)
    CREATE VIEW dbo.OC_CUSTOMERS
    AS
       /*Generated by SQL Server Migration Assistant for Oracle version 6.0.0.*/
       *   SSMA error messages:
       *   O2SS0481: Conversion of statement containing user defined type column 'c.cust_address' not supported.
       *   O2SS0481: Conversion of statement containing user defined type column 'c.phone_numbers' not supported.
       *   O2SS0430: Conversion of multiset conditions is not supported.
       *   CAST(MULTISET
       *      SELECT
       *         o.order_id,
       *         o.order_mode,
       *         MAKE_REF(oc_customers, o.customer_id),
       *         o.order_status,
       *         o.order_total,
       *         o.sales_rep_id,
       *         CAST(MULTISET
       *               SELECT
       *                  l.order_id,
       *                  l.line_item_id,
       *                  l.unit_price,
       *                  l.quantity,
       *                  MAKE_REF(oc_product_information, l.product_id)
       *               FROM order_items  l
       *               WHERE o.order_id = l.order_id
       *            ) AS order_item_list_typ)
       *      FROM orders  o
       *      WHERE c.customer_id = o.customer_id
       *   ) AS order_list_typ)
       SELECT
          c.CUSTOMER_ID,
          c.CUST_FIRST_NAME,
          c.CUST_LAST_NAME,
          c.cust_address,
          c.phone_numbers,
          c.NLS_LANGUAGE,
          c.NLS_TERRITORY,
          c.CREDIT_LIMIT,
          c.CUST_EMAIL,
          NULL
       FROM dbo.CUSTOMERS  AS c   */
    Any suggestion on converting this view would be helpful.
    Kind regards.

    Thanks Lydia Zhang for your reference urls.
    Please let me know if you come across any reference articles related to
    Creating a SQL Server table and View with columns as SQL Server TVP similar to Oracle UDT like
      CREATE TABLE "OE"."CUSTOMERS"
       (    "CUSTOMER_ID" NUMBER(6,0),
        "CUST_FIRST_NAME" VARCHAR2(20 BYTE) CONSTRAINT "CUST_FNAME_NN" NOT NULL ENABLE,
        "CUST_LAST_NAME" VARCHAR2(20 BYTE) CONSTRAINT "CUST_LNAME_NN" NOT NULL ENABLE,
        "CUST_ADDRESS" "OE"."CUST_ADDRESS_TYP" ,
        "PHONE_NUMBERS" "OE"."PHONE_LIST_TYP" ,
        "NLS_LANGUAGE" VARCHAR2(3 BYTE),
    And also creating a SQL Server TVP inside an another SQL Server TVP as in Oracle
    create or replace TYPE customer_typ
     AS OBJECT
        ( customer_id        NUMBER(6)
        , cust_first_name    VARCHAR2(20)
        , cust_last_name     VARCHAR2(20)
        , cust_address       cust_address_typ
       , credit_limit       NUMBER(9,2)
        , cust_email         VARCHAR2(30)
        , cust_orders        order_list_typ
    NOT FINAL;
    Kind regards.
    Venkatesha

  • User defined error handling in PLSQL procedure of portal form

    I need some help of building a user defined exception handling in PLSQL.
    I build a portal form based on a PLSQL procedure.
    In this procedure there are several SQL statements with exception handling.
    In case of exception I want to display my on error message and than raise the procedure, so that the user can read the message and than go back to form.
    I try this by calling a raise statement generating some HTML output over htp.p() but than the output look's like
    SQL:
    begin
    "ACHEMA2003"."P_LOGIN" ( P_STAMM_SEQ => 33491, P_ADRESSNR => 2009721, P_PASSWORD => '3333', P_PROJEKT_ID => 'ACHEMA2003', P_MESSENR => '00023', P_SPKZ => 'D');
    end;
    ORA-20000:
    Login ACHEMA 2003
    Ung|ltiges Passwort !!!
    Back to form
    I want to supress the standard Oracle messages.
    Now I read about the packages wwerr_api_error and wwerr_api_error_ui to make this, but it seems to be a little difficult.
    Is there anybody who have a solution for this problem, perhaps some example PLSQL code for this.
    Thanks Erwin.

    Jacob,
    Try following:
    declare
    v_sender VARCHAR2(1000);
    v_sender_id NUMBER;
    begin
    v_sender := p_session.get_value_as_VARCHAR2(
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_SENDER');
    v_sender_id := p_session.get_value_as_NUMBER(
    p_block_name => 'DEFAULT',
    p_attribute_name => 'A_SENDER_ID');
    insert into hd (number, text) values (hd_seq.nextval,
    'step 3 v_sender = ' || v_sender ||
    ' v_sender_id = ' || v_sender_id);
    if v_sender_id >= 100 then
    p_session.set_value(
    p_block_name => "_block",
    p_attribute_name => '_STATUS',
    p_value => 'Sender ID must be less than 100!');
    -- return to your form with status message set
    -- and all fields filled with recent values
    return;
    end if;
    end;
    -- This point is reached only if validation is OK
    doInsert;
    Regards,
    Henn

  • User defined error in register service of service portlet

    Hi,
    When I try to install the service portlet(PLSQL PDK)
    I get a user defined exception error whenthe service register
    sql file is ran.
    Does any one know the solution for this??
    cheers,
    Ranjit
    PS:sorry for posting this second time.

    Hello Shanky!
                When ever purchase order is created, a message type will get invoked which in turn will call the function module IDOC_INPUT_PORDCR1.The import parameters of this function module must be populated with appropriate values when purchase order is created.Failing which, error messages will be generated.That's what happened in your case.
               Also, please check in WE05 whether your IDoc is created with error.If you have erroneous IDoc in WE05 for your purchase order, it should be due to the above stated reason.To override the erroneous IDocs , take a copy of the above function module and do the customization that suits to your requirement. 
               If  you cannot handle this issue, approach your ABAP-XI consultant or the ABAPer who has knowledge in ALE/IDocs.
    Regards,
    S.Suresh

  • Can I change the location of my user-defined error file to the project directory?

    The LabVIEW help says that the user-defined (XML-based) error file has to be located in the labview\user.lib\errors directory.
    I would rather have the file in my Project Folders directory, as this is what is distributed. 
    Is there a way to make LabVIEW look elsewhere on startup.
    -James

    Hey, from the LabVIEW help, it looks like you don't need to worry about it.
    "If you use the Application Builder to create an installer, you can place a checkmark in the Install custom error code files? checkbox on the Advanced page of the Installer Properties dialog box to include LabVIEW error code files. The installer build includes all error code files from labview\project\errors and labview\user.lib\errors and installs them in the Shared\LabVIEW Run-Time\8.2\errors directory."
    If you select that checkbox, LabVIEW takes care of it for you.
    Hope this helps!
    Daniel Eaton
    National Instruments
    Systems Engineering
    Embedded and Industrial Control

  • Will ASE system defined error number fall into user defined error numbers starting from 20000?

    The maximum error number in sysmessages:
    select max(error) from master.dbo.sysmessages
    ON ASE 15.0.3
    column1   
    19975     
    ON ASE 15.7
    select max(error) from master.dbo.sysmessages
    column1   
    19999

    Hi Siddhartha,
    I don't expect ASE to start using error numbers in the user-defined range.  I'm part of the group that reviews new messages, and conserving the shrinking pool of available numbers is certainly a concern of ours. We are actually still some ways away from running out of numbers.
    The error numbers are actually a concatenation of a major family number (the 100s values)
    and minor numbers 0-99 in each family.  There are many families of errors that have unused values, one possibility is that we could use those unused values for errors that don't really belong in that family.   Another thing we can do (though it would have to be in a major release of both open client and ASE) would be to introduce another mechanism that might work just the same as error messages but be called, say, "notifications" or "faults' (though that term is already used by checkstorage.
    There actually already exist two such families of messages, one called "errors" and the other called "messages".  You can see this when configuring a shared memory dump, both are possible dump conditions.  "Errors" show up in the errorlog displaying the message number, severity, and a state value, while "Messages" just display text and support has to look up the associated message number in the ASE sourcecode.  (Not all text messages in the log are actual messages like this, some are just text that gets printed that one can't configure a memory dump on.)
    Cheers,
    -bret

  • Throw user defined Errors from within built in apex procedures

    Hi all
    The task at hand is I have a tabular form with add row button. On click of this button, the built in add row to a form type of process is called. The table in which this row is being added has some Foriegn key constraints and some other check constraints.
    What I want is if during insertion in the table, if there is a foreign key voilation and the process fails, I should be able to throw a user defined exception.
    And moreso, I want to throw this in the notification area and not the error page.
    Any thoughts??
    Regards
    Shantanu Dhanuka

    Hi Shantanu,
    If you want to capture exceptions raised by the wizard created MR* processes, you have to complete replace this processes with your own processes where you do the insert/update/delete. Don't forget to add the code for the optimistic locking.
    About showing the error in the notification area, see my blog posting at
    http://inside-apex.blogspot.com/2006/12/hacking-apex-error-page.html
    which is able to do that.
    Patrick
    Check out my APEX-blog: http://inside-apex.blogspot.com
    Check out the ApexLib Framework: http://apexlib.sourceforge.net

Maybe you are looking for