Ora-06510 ora-06512  unhandled user-defined exceptions

hi,
i try to execute command
exec wwv_context.sync but i get following errors
16:35:45 Error executing statement: ORA-06550: row 2, column 1:
16:35:45 PLS-00201:identifier 'WWV_CONTEXT.SYNC' must be declared
16:35:45 ORA-06550: row 2, column 1
please help.

What's the status for this object?
select status from dba_objects where object_name ='<your_object>';

Similar Messages

  • Error : ORA-06510: PL/SQL: unhandled user-defined exception

    Hi,
    Please help on this Error.
    Here is my code for Trigger
    Code for Trigger
    CREATE OR REPLACE TRIGGER TRG_EXCEP AFTER INSERT ON TEST FOR EACH ROW
    DECLARE
         vInt NUMBER := 0;
         vErr EXCEPTION;
    BEGIN
         vInt := :OLD.TEST_ID;
         IF vInt > 10 THEN
              INSERT INTO TEST1 VALUES (:NEW.TEST_ID,:NEW.TEST_NAME);
         ELSE
              RAISE vErr;
         END IF;
    EXCEPTION
              WHEN vErr THEN
                   INSERT INTO TEST1 VALUES (0,:NEW.TEST_NAME);
    END;
    While inserting in to the table TEST iam getting the following error
    Error on line 0
    INSERT INTO TEST VALUES (147541,'Mm',SYSDATE)
    ORA-00001: unique constraint (DB_TEST.SYS_C005327) violated
    ORA-06512: at "DB_TEST.TRG_EXCEP", line 13
    ORA-06510: PL/SQL: unhandled user-defined exception
    Someone help me please ...............
    Thanks,
    Murali.V

    Hi,
    I made the mistake here
    INSERT INTO TEST1(id,name) VALUES (0,:NEW.TEST_NAME);
    where i defined the id as primary key.
    But the another problem for me now is while compiling the trigger after i modified,
    i get this error
    11:37:05 Error: TRIGGER DB_TEST.TRG_EXCEP
    On line: 7
    PLS-00553: character set name is not recognized
    Please help.
    Thanks,
    Murali.V

  • Unhandled user-defined exception in dbms_session?

    hi guys,
    I've had some code that's been working for a while but just now has started giving me the following:
    SQL> select *
      2    from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
    PL/SQL Release 10.2.0.5.0 - Production
    CORE    10.2.0.5.0      Production
    TNS for Linux: Version 10.2.0.5.0 - Production
    NLSRTL Version 10.2.0.5.0 - Production
    5 rows selected.
    Elapsed: 00:00:00.00
    SQL> begin
      2 
      3 
      4          dbms_session.set_nls('cursor_sharing','FORCE');
      5         
      6         
      7  end;                                                     
      8  /
    begin
    ERROR at line 1:
    ORA-06510: PL/SQL: unhandled user-defined exception
    ORA-06512: at "SYS.DBMS_SESSION", line 158
    ORA-06512: at line 4I've closed my sessions and restarted, it doesn't matter whether this is running via a stored proc or as an anonymous block like the above - what should I be looking for to find the cause of this?
    I don't think I've been changing anything except using the dbms_session.set_identifier procedure, but certainly not in the sessions that I've been setting this nls parameter...

    sybrand_b wrote:
    You can not use set_nls to change this parameter, you need 'execute immediate 'alter system... etc'
    And it is a bad hack to work around not using bind variables.
    Sybrand Bakker
    Senior Oracle DBAalso a work around for when your system's parameter is set to 'SIMILAR' but you're trying to use certain XML functionality:
    SQL> alter session set cursor_sharing = SIMILAR;
    Session altered.
    Elapsed: 00:00:00.00
    SQL> with t as (select xmltype('<validation>
      2                                <error id="1">
      3                                  <sys_message>test</sys_message>
      4                                  <cust_message>testing</cust_message>
      5                                  <cust_code>blahblah</cust_code>
      6                                </error>
      7                              </validation>') pi_xml from dual)                  
      8            SELECT xtab.sys_message
      9                  ,xtab.cust_message
    10                  ,xtab.cust_code
    11              FROM xmltable('/validation/error'
    12                    passing (SELECT pi_xml
    13                               FROM T)
    14                    COLUMNS
    15                      ID            NUMBER   path '/error/@id'
    16                      ,sys_message  VARCHAR2(1000) path '/error/sys_message'
    17                      ,cust_message VARCHAR2(1000) path '/error/cust_message'
    18                      ,cust_code    VARCHAR2(1000) path '/error/cust_code') xtab;
                                </validation>') pi_xml from dual)
    ERROR at line 7:
    ORA-01780: string literal required
    Elapsed: 00:00:00.00
    SQL> alter session set cursor_sharing = 'FORCE';
    Session altered.
    SQL> with t as (select xmltype('<validation>
      2                                <error id="1">
      3                                  <sys_message>test</sys_message>
      4                                  <cust_message>testing</cust_message>
      5                                  <cust_code>blahblah</cust_code>
      6                                </error>
      7                              </validation>') pi_xml from dual)                   
      8            SELECT xtab.sys_message
      9                  ,xtab.cust_message
    10                  ,xtab.cust_code
    11              FROM xmltable('/validation/error'
    12                    passing (SELECT pi_xml
    13                               FROM T)
    14                    COLUMNS
    15                      ID            NUMBER   path '/error/@id'
    16                      ,sys_message  VARCHAR2(1000) path '/error/sys_message'
    17                      ,cust_message VARCHAR2(1000) path '/error/cust_message'
    18                      ,cust_code    VARCHAR2(1000) path '/error/cust_code') xtab; 
    SYS_MESSAGE
    CUST_MESSAGE
    CUST_CODE
    test
    testing
    blahblah
    1 row selected.edit:
    incidentally, the exact same result can be retrieved with with cursor_sharing = similar if you do it this way...:
    SQL> alter session set cursor_sharing = SIMILAR;
    Session altered.
    Elapsed: 00:00:00.00
    SQL> with t as (select xmltype('<validation>
      2                                <error id="1">
      3                                  <sys_message>test</sys_message>
      4                                  <cust_message>testing</cust_message>
      5                                  <cust_code>blahblah</cust_code>
      6                                </error>
      7                              </validation>') pi_xml from dual)                     
      8        SELECT extractvalue(pi_xml,'/validation/error[@id=1]/sys_message')  sys_message
      9              ,extractvalue(pi_xml,'/validation/error[@id=1]/cust_message') cust_message
    10              ,extractvalue(pi_xml,'/validation/error[@id=1]/cust_code')    cust_code
    11          FROM (SELECT pi_xml
    12                  from t); 
    SYS_MESSAGE
    CUST_MESSAGE
    CUST_CODE
    test
    testing
    blahblah
    1 row selected.Edited by: WhiteHat on May 11, 2011 5:11 PM

  • Validation returns : no data found + unhandled user-defined exception

    Hi, I'm working with Application Express 4.1.1.00.23.
    I have an application for timesheet management.
    On one page, I've got a report (not interactive) in which you can enter the hours you've worked. First you add a free line, choose the task and then enter the hours you've spent.
    You can only have one empty line at a time. If you try to add a line when you already have an empty line, a validation will display an error. It worked fine in version 3.2. Now we upgraded to 4.1 and get a weird error :
    1) The validation msg appears fine
    2) The report appears fine
    3) There is a msg at the end of the report saying :
    report error:
    ORA-01403: no data found
    ORA-06510: PL/SQL: unhandled user-defined exception
    Could somebody point out the source of this problem ?
    Thank you!
    Here is the debug :
    0.31117     0.00204     parse query as: FEUILLES_DE_TEMPS     4     
    0.31319     0.07865     ...Execute Statement: select NULL "CHECK$01", NULL "nom_projet2", NULL "NO_TACHE_ENTRE", NULL "NO_TACHE", NULL "NO_SEMAINE_EMPLOYE", NULL "NOM_TACHE", NULL "Tâches", NULL "SEQUENCE", NULL "Heures dim", NULL "DIM", NULL "Heures lun", NULL "LUN", NULL "Heures mar", NULL "MAR", NULL "Heures mer", NULL "MER", NULL "Heures jeu", NULL "JEU", NULL "Heures ven", NULL "VEN", NULL "Heures sam", .........
    0.39191     0.00158     print column headings     4
    0.39342     0.02546     rows loop: 500 row(s)     4
    0.41889     0.00087     report error: ORA-01403: no data found ORA-06510: PL/SQL: unhandled user-defined exception
    .....

    Hi, thanks for your answer. Here is the validation we are executing. I'm pretty sure its fine since count(*) always return a value (plus we see V2 in the debug...) :
    declare
    l_count number;
    begin
    apex_debug_message.enable_debug_messages(7);
    apex_debug_message.log_message('-----------------------------------V1----------------------------------');
    -- get remaining empty tasks count
    SELECT count(*) into l_count
    FROM VIEW_TACHE_SYSTEME
    WHERE NO_TACHE NOT IN (SELECT DISTINCT NO_TACHE FROM TACHE_JOUR WHERE NO_SEMAINE_EMPLOYE = :P36_NO_SEMAINE_EMPLOYE);
    apex_debug_message.log_message('-----------------------------------V2----------------------------------');
    apex_debug_message.log_message(l_count);
    if l_count = 0 then
    return 'Veuillez utiliser la tâche vide avant d''ajouter une ligne.';
    else
    return null;
    end if;
    end;
    Here is the debug :
    0.14643     0.00318     ...Validation "ADD_ROW_VALIDATION" - Type: FUNC_BODY_RETURNING_ERR_TEXT     4     
    0.14961     0.00318     ...Execute Statement: declare function x return varchar2 is begin declare l_count number; begin apex_debug_message.enable_debug_messages(7); apex_debug_message.log_message('-----------------------------------V1----------------------------------'); -- get remaining empty tasks count SELECT count(*) into l_count FROM VIEW_TACHE_SYSTEME WHERE NO_TACHE NOT IN (SELECT DISTINCT NO_TACHE FROM TACHE_JOUR WHERE NO_SEMAINE_EMPLOYE = :P36_NO_SEMAINE_EMPLOYE); apex_debug_message.log_message('-----------------------------------V2----------------------------------'); apex_debug_message.log_message(l_count); if l_count = 0 then return 'Veuillez utiliser la tâche vide avant d''ajouter une ligne.'; else return null; end if; end; return null; end; begin wwv_flow.g_computation_result_vc := x; end;     4     
    0.15280     0.01299     -----------------------------------V1----------------------------------     6     
    0.16578     0.00310     -----------------------------------V2----------------------------------     6     
    0.16888     0.00235     0     6     
    0.17123     0.00225     ......Result = Veuillez utiliser la tâche vide avant d'ajouter une ligne.     4     
    0.17347     0.00276     ......Did NOT pass     4     
    0.17624     0.00314     Add error onto error stack     4     
    0.17938     0.00343     ...Error data:     4     
    0.18280     0.00327     ......message: Veuillez utiliser la tâche vide avant d'ajouter une ligne.     4     
    0.18607     0.00446     ......display_location: INLINE_IN_NOTIFICATION     4     
    0.19053     0.00323     ......is_internal_error: false     4     
    0.19375     0.00323     ......error_backtrace: - PL/SQL Call Stack - object line object handle number name c000000382130f30 717 package body APEX_040100.WWV_FLOW_ERROR c000000382130f30 833 package body APEX_040100.WWV_FLOW_ERROR c00000039da9b5c8 154 package body APEX_040100.WWV_FLOW_VALIDATION c00000039da9b5c8 363 package body APEX_040100.WWV_FLOW_VALIDATION c00000039da9b5c8 784 package body APEX_040100.WWV_FLOW_VALIDATION c00000039da9b5c8 905 package body APEX_040100.WWV_FLOW_VALIDATION c00000039d1142c8 10005 package body APEX_040100.WWV_FLOW c000000381287050 31 anonymous block

  • Trapping user defined exceptions in forms

    hi guys..
    i have a database trigger that goes like that:
    CREATE OR REPLACE TRIGGER loan_trig
    before insert on loans
    for each row
    declare
    lcount number(10);
    duplicate_loan exception;
    begin
    select count(1) into lcount from loans
    where branch_code=:new.branch_code
    and client_code=:new.client_code;
    if lcount>0 then
    raise duplicate_loan;
    end if;
    end;
    now how do i trap this user defined exception on the form ?
    declaring the exception in the form & handling it in the exeption handler section doesn't seem to work and i get the following error:
    "when button pressed trigger raised unhandled exception
    ora-06510"
    ora-06510:unhandled user-defined exception
    what am i doing wrong?
    if i have to handle the exception in the trigger body how do i do that?
    thankx in advance..

    Hello,
    raise duplicate_loan; won't avoid the trigger to insert and commit. If you really want to avoid the insertion, use the raise_applicatrion_error() instead.
    For instance : Raise_Application_Error( -20001, 'Insertion cannot be validated' );Then in your Forms module, you can catch it like this:
       Begin
       Insert Into ...
       when others then
          LC$Erreur := Substr( SQLERRM,1 , 500 );
          LN$err_code := ABS(SQLCODE);
          If LN$err_code = 20001 Then ...
       End;
    ...Francois

  • Help in user defined exception handler

    Hi
    Can some one help in solving this error .
    when i run my procedure i get this error which is given below .
    ORA-06510 PL/SQL unhandeled user defined exception at line 7
    Procedure FMG_EXTRACT_MOTORBIKE_NEWBUS (P_NSSC_YN VARCHAR2) IS
    l_start date;
    l_end date;
    cursor motorbike_rec is
    select
    c.id,
    k.id pak_id,
    p.ref,
    i.description,
    i.current_status,
    i.premium,
    i.sum_insured,
    mv.registration_no,
    mv.cc_rating,
    nl.ncl_level,
    nl.percentage_discount,
    dp.full_name main_driver,
    dpd.birth_date,
    e.user_name entered_by,
    ep.full_name emp_name,
    fmg_get_imposed_terms(i.id,'. ',';') imposed_terms
    from
    fmg_clients c,
    fmg_client_paks k,
    fmg_policies p,
    fmg_Policy_items i,
    fmg_mv_usages u,
    fmg_people dp,
    fmg_people_details dpd,
    fmg_employees e,
    fmg_people ep,
    fmg_motor_vehicles mv,
    fmg_ncb_levels nl
    where i.date_created>=l_start
    and i.date_created<l_end
    and i.pol_id=p.id
    and p.ctp_id=k.id
    and k.cli_id=c.id
    and i.id=u.poi_id(+)
    and u.per_id=dp.id(+)
    and dp.id=dpd.per_id(+)
    and i.id=mv.poi_id(+)
    and i.ncl_id=nl.id(+)
    and ( (i.pit_pro_code in ('TFF','FMC','FMT','FMF','FBK','PMC','TPO','MCL'))
    or (i.pit_pro_code = 'CMV' and i.pit_code = 'MCL')
    or (i.pit_pro_code = 'PMS' and i.pit_code = 'MCL')
    or (i.pit_pro_code = 'PMT' and i.pit_code in ('MCT','MCF'))
    and i.user_created=e.user_name
    and ( (e.business_unit='BCC' and P_NSSC_YN='Y') OR (nvl(e.business_unit,'X')<>'BCC' and P_NSSC_YN='N') )
    and e.per_id=ep.id;
    l_file UTL_FILE.FILE_TYPE;
    l_file_name varchar2(100);
    l_data VARCHAR2(4000);
    BEGIN
    if P_NSSC_YN='Y' then
    l_start := trunc(sysdate)-1;
    l_end := trunc(sysdate);
    l_file_name := 'MotorCycle_Daily_'||to_char(l_start)||'.csv';
    l_file := utl_file.fopen( fmg_re_filepath('SSC'), l_file_name, 'W' );
    else
    l_start := to_date('01-' || to_char(sysdate-28,'MM-YYYY'));
    l_end := last_day(to_date('01-' || to_char(sysdate-28,'MM-YYYY')));
    l_file_name := 'MotorCycle_Monthly_'||to_char(l_start)||'_'||to_char(l_end)||'.csv';
    l_file := utl_file.fopen( fmg_re_filepath('GAU'), l_file_name, 'W' );
    end if;
    l_data := '"Client ID","Pak ID","Policy Ref","Item Desc","RegoNo","CC","Item Status","Premium","Sum Insured",' ||
    '"NCB Level","NCB%","Main Driver","Birth Date","Imposed terms","EnteredBy","Employee Name"';
    utl_file.put_line(l_file, l_data );
    for i in motorbike_rec loop
    l_data :=
    to_char(i.id) || ',' ||
    to_char(i.pak_id) || ',' ||
    i.ref || ',' ||
    '"' || i.description || '",' ||
    '"' || i.registration_no || '",' ||
    to_char(i.cc_Rating) || ',' ||
    i.current_status || ',' ||
    to_char(i.premium) || ',' ||
    to_char(i.sum_insured) || ',' ||
    to_char(i.ncl_level) || ',' ||
    to_char(i.percentage_discount) || ',' ||
    '"' || i.main_driver || '",' ||
    to_char(i.birth_date) || ',' ||
    '"' || i.imposed_terms || '",' ||
    i.entered_by || ',' ||
    '"' || i.emp_name || '"' ;
    utl_file.put_line(l_file,l_data);
    end loop;
    utl_file.fclose( l_file );
    exception
    when others then
    if utl_file.is_open(l_file) then
    utl_file.fclose( l_file );
    end if;
    raise;
    END;

    What does fmg_re_filepath('SSC') return? Are their sufficient rights with Oracle user on the location that is returned by this function?
    Which OS are you using?

  • How to handle user defined exception from C#?

    Hi:
    I have some PL/SQL code that will throw a user defined exception if certain conditions are met. How do I handle user defined exceptions if this procedure/function is being called from C#? C# can handle a normal Oracle SQL error (e.g. ORA-XXXX) because they are defined in the proper class, but how do I get it to know about my user defined exception? Does anyone have any links to examples of doing this?
    Thanks.

    Hi Gaff,
    Is there a particular problem you're having doing this? It works as normal for me...
    Cheers
    Greg
    PLSQL
    =========
    create or replace procedure throwsomething as
    begin
    raise_application_error(-20001,'kaboom');
    end;
    ODP
    =====
        class Program
            static void Main(string[] args)
                using (OracleConnection con = new OracleConnection())
                    con.ConnectionString = "user id=scott;password=tiger;data source=orcl";
                    con.Open();
                    using (OracleCommand cmd = new OracleCommand())
                        cmd.CommandText = "begin throwsomething;end;";
                        cmd.Connection = con;
                        try
                            cmd.ExecuteNonQuery();
                        catch (OracleException oe)
                            Console.WriteLine("caught " + oe.Message);
    OUTPUT
    ========
    caught ORA-20001: kaboom
    ORA-06512: at "SCOTT.THROWSOMETHING", line 3
    ORA-06512: at line 1

  • 'User defined exception error in package OE_SCHEDULE_UTIL' in Sales Order

    Dear Contributors,
    I am getting the following error while trying to enter line items in the Sales order form. Please provide your valuable suggestion on how to fix this...
    User defined exception error in package OE_SCHEDULE_UTIL Procedure Insert_Into_Mtl_Sales_Orders

    1004661 wrote:
    Dear Contributors,
    I am getting the following error while trying to enter line items in the Sales order form. Please provide your valuable suggestion on how to fix this...
    User defined exception error in package OE_SCHEDULE_UTIL Procedure Insert_Into_Mtl_Sales_Orders
    Please see (ORA-01006 bind variable does not exist FND_FLEX_SERVER during OM Activity [ID 1067359.1]).
    Thanks,
    Hussein

  • How can we handle user defined exceptions in ejbStore() of entity bean

    Accroding to my knowledge in ejbStore we can not handle user defined exceptions. Can anybody help on this????

    In my case I am calling a method from ejbsotre() . In that method i wanted to put some checks according to that i wanted to throw exceptions.
    In this case how would I handle exceptions.
    Can you suggest in this case,please !!!

  • Handle user defined exception in stored procedure

    Dear all,
    I'm using JDev 11.1.1.4.0
    In my application I'm calling the stored procedure with only in parameters using the Example 37-9 http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/bcadvgen.htm#ADFFD1056
    In my stored procedure I have user defined exception, like:
    create or replace procedure ...
    AS
    e_otwarty     EXCEPTION;
    //some code
      EXCEPTION
        WHEN e_otwarty THEN
          dbms_output.put_line('Masz juz otwarty raport');
          // or what should I do here ??
    END;I want to display the message in the popup window in my ADF application. How can I do that ?
    Regards,
    Wojtek.

    raise_application_error(-20001, 'error message');
    Scott

  • IE only: wwsec_app_priv.process_signon (User-Defined Exception) (WWC-41417)

    I am using Portal 3.0.6 in Sun SunOS 5.8. The site will be running in https mode. As everybody knows, 443 is the default port number for ssl mode. I setup the httpd.conf to 443. No problem. I ran ssodatan to relate Login Server to Portal - I had to specify 443 at the end of URL in ssodatan syntax. Otherwise, I got "Error:You cannot login because there is no configuration information stored in the enabler configuration table. (WWC-41439)" both in Netscape navigator and MS Internet Explorer.
    I now am able to log in Portal site. But, the problem happens just after loggin in. With Navigator I don't get any problems. But, IE gives me "Error: Unexpected error encountered in wwsec_app_priv.process_signon (User-Defined Exception) (WWC-41417)". I guess this happens because of how IE works with https. It takes 443 off from URL in https mode. The portal is unable to match the url and what it has in wwsec_enabler_config_info$ which has 443. When I tested with 444 as port number. It worked! Putting a port number in URL will be cumbersome. That's why I am trying with 443.
    I tried also with ssodatax to add an additional entry for without 443 as specified in a document "Oracle9ias Portal configuration options" page 30. Ssodatax has a bug so it updates existing entry, too. I had to update it back to its original value. It's fine. But, this time another error comes up. "WWC-00000". I don't see any solution for this.
    null

    When a new user is logging on for the first time, the portal adds them to the AUTHENTICATED_USERS group under the portal's group container. In your case, for some users, this is apparently running into some problem.
    To debug this, try turning on additional logging on the OID server and attempt logging in as these users, and see what is reported.
    You should enable the following debug flags:
    Search Filter Processing
    Access Control List Processing
    Status Log Connections/Operations/Results

  • "user defined exception" in a stored procedure and APEX

    I would like to use user defined exception in a stored procedure or trigger in a APEX application.
    Does anybody know how to do it ? or know where can I find a good reference ?
    Thanks,

    raise_application_error(-20001, 'error message');
    Scott

  • How to use user defined exception class

    Hi all
    I just need som help with creating a user defined exception class.
    Im writing a small/simple text editor.
    My exception class looks like this:
    public class myExcp extends Throwable
         private String message;
         public myExcep(String message)
              this.message = message;
         public void display()
              System.out.println(message);
    I would like to use it when a user tries to open a exe-file instead of a txt file.
    Here is some code from the editor:
    if (e.getSource() == open)
    saveOld();
    if (fc.showOpenDialog(null)== JFileChooser.APPROVE_OPTION)
    readFile(fc.getSelectedFile().getAbsolutePath());           
    saveas.setEnabled(true);                
    So, should I use exception here or at the readFile method?
    readfile:
    private void readFile(String fileName)
    try
    String tmp = fileName.substring(fileName.length() -4, fileName.length());
    if (!tmp.equals(".exe"))
    FileReader r = new FileReader(fileName);
    textarea.read(r, null);
    r.close();
    currentFile = fileName;
    label.setText(currentFile);
    changed = false;
    catch (IOException e)
    JOptionPane.showMessageDialog (this, "Cannot find the file " + fileName);
    Where and how do I use my exception class.
    Do I need to create an instance? Where?
    Should the exception class extend Exception instead?
    Thank you in advance /

    Extend Exception, not Throwable. It's a checked exception that way.
    Follow the Sun coding standards and make that exception class name start with a capital letter.
    When you extend Exception, override all four ctors.
    What's that display method you added? Isn't getMessage() good enough?
    You need to create a new instance just before you throw the exception, of course.
    Sounds like a terrible design, by the way. Exceptions shouldn't be used like "go to" for app logic. They should signal unrecoverable conditions. You can easily recover from the situation you've described simply by displaying a pop-up that tells the user to open only text-readable file types. I think that's a better solution.
    %

  • PL/SQL Using SQL%NOTFOUND to raise a user defined exception in a function

    I have written the following function for finding the number of items in stock in the item table.
    CREATE OR REPLACE function getAmount (ItemID IN NUMBER)
    RETURN NUMBER
    AS
    invalid_id EXCEPTION;
    returnedQty number;
    BEGIN
    Select qty
    Into returnedQty
    From item
    Where itemNo = ItemID;
    RETURN (returnedQty);
    IF SQL%NOTFOUND THEN
    RAISE invalid_id;
    END IF;
    COMMIT;
    Exception
    WHEN invalid_id THEN
    DBMS_OUTPUT.PUT_LINE('Invalid ID entered');
    END getAmount;
    The function compiles successfully, although there is a problem that Oracle is not handling my user-defined exception invalid_id
    If I use the following for a valid itemID:
    DECLARE
    return_value number;
    BEGIN
    return_value := getAmount(1);
    DBMS_OUTPUT.PUT_LINE (return_value);
    END;
    then the function returns the quantity of items in stock correctly.
    However, if I enter an incorrect itemID, say 20
    DECLARE
    return_value number;
    BEGIN
    return_value := getAmount(20);
    DBMS_OUTPUT.PUT_LINE (return_value);
    END;
    The invalid_id exception is not raised, and the Oracle errors says: no_data_found and the function has not returned a value. If I add a no_data_found exception, this works perfectly, but for this assignment I must write my own user-defined error.
    Any help would be very much appreciated!
    Thank you.

    What you're trying to do, is to use an implicit cursor. Implicit cursors will raise no_data_found and too_many_rows in case of an error. Explicit cursors will not.
    Also, you have a small coding error ... a little rewrite and your code will do as you want to:
    CREATE OR REPLACE function getAmount (ItemID IN NUMBER)
    RETURN NUMBER
    AS
    invalid_id EXCEPTION;
    returnedQty number;
    cursor citem is
    Select qty
    From item
    Where itemNo = ItemID;
    fnd boolean;
    BEGIN
    open citem;
    fetch citem Into returnedQty;
    fnd := citem%found;
    close citem;
    if fnd then
    RETURN (returnedQty);
    else
    RAISE invalid_id;
    END IF;
    /* Do not catch your own exception or the calling code will not receive it.
    Exception
    WHEN invalid_id THEN
    DBMS_OUTPUT.PUT_LINE('Invalid ID entered');
    END getAmount;
    Your problem is, you're not using a package. This means, that the calling code has no way of catching this user-defined exeption. The correct way is to define a package, define the userdefined exception in the package and refer to it in your code:
    create or replace package amt
    is
    invalid_id EXCEPTION;
    function getAmount (ItemID IN NUMBER)
    RETURN NUMBER;
    end;
    create or replace package body amt
    is
    function getAmount (ItemID IN NUMBER)
    RETURN NUMBER
    AS
    returnedQty number;
    cursor citem is
    Select qty
    From item
    Where itemNo = ItemID;
    fnd boolean;
    BEGIN
    open citem;
    fetch citem Into returnedQty;
    fnd := citem%found;
    close citem;
    if fnd then
    RETURN (returnedQty);
    else
    RAISE invalid_id;
    END IF;
    end;
    end; -- end package
    To do a simple test, you'll do:
    declare
    a number;
    begin
    a := amt.getAmount(123);
    dbms_output.put_line('The result is '||a);
    exception
    when amt.invalid_id then
    dbms_output.put_line('ID not found');
    end;
    Other ways is to raise the exception in your no_data_found block.
    But I'm REALLY puzzled if there's really someone out there who prefers a user-defined exception instead of the clearly defined NO_DATA_FOUND exception.
    I can't be sure of course, but are you sure what they mean is they don't want ANY exception? That's a pretty common requirement.
    In general - explicit cursors are a bit faster because Oracle does not have to do a second fetch to determine TOO_MANY_ROWS. And it's not too much additional writing. Explicit cursors will never raise exceptions - unless you use dynamic sql and your SQL is invalid.
    Good luck

  • In which of the following sections of a PL/SQL block is a user-defined exception raised?

    Hi,
    A (somewhat elementary) question:
    In which of the following sections of a PL/SQL block is a user-defined exception raised?
    a) Exception section
    b) Declarative section
    c) Error handling section
    d) Executable section
    I'd be interested to hear people's answers.
    Thanks.

    As Etbin already noted, there are only 3 sections and user-defined exception can be raised in any of them. User-defined exception raised in declarative section example:
    declare
        year_zero exception;
        pragma exception_init(year_zero,-01841);
    begin
        declare
            v_dt date := to_date(1721420,'j');
        begin
            null;
        end;
      exception
        when year_zero
          then
            dbms_output.put_line('Year 0!');
    end;
    Year 0!
    PL/SQL procedure successfully completed.
    SQL>
    User-defined exception raised in executable section example:
    declare
        year_zero exception;
        pragma exception_init(year_zero,-01841);
        v_dt date;
    begin
        v_dt := to_date(1721420,'j');
      exception
        when year_zero
          then
            dbms_output.put_line('Year 0!');
    end;
    Year 0!
    PL/SQL procedure successfully completed.
    SQL>
    User-defined exception raised in exception handling section example:
    declare
        year_zero exception;
        pragma exception_init(year_zero,-01841);
        v_dt date;
    begin
        declare
            v_num number;
        begin
            v_num := 1 / 0;
          exception
            when others
              then
                v_dt := to_date(1721420,'j');
        end;
      exception
        when year_zero
          then
            dbms_output.put_line('Year 0!');
    end;
    Year 0!
    PL/SQL procedure successfully completed.
    SQL>
    SY.

Maybe you are looking for

  • Photoshop CC closes or freezes when saving in save for web and devices

    Hello, Since I have a new laptop with Windows 8, I couldn't get Photoshop CS6 anymore, so I downloaded PS CC. It's working great the last days, but since yesterday PS freezes or closes everytime I try to save a .gif in save for web and devices. It dr

  • How to do the Partial delivery for configurable material ?

    Hi All, I am creating a sales order  for a configurable material and is trying to do the partial delivery for the same. But, after the outbound delivery the status of the sales order is shown as completed although I have done the partial delivery. He

  • IMac 24 C2D freezing, beach ball, pinwheel

    Hello wonderful user community! I am helping my wife with this issue, she's never posted on the ASC before. In the last two weeks my iMac has started behaving strangely.   It doesn't seem to matter whether running Spotify, Chrome, Firefox, or other a

  • Can a 6300 with no SIM connect to the Internet via...

    Hello, I have a Nokia 6300 and I would like to be able to connect it via USB lead to my PC and use the PC's internet connection rather than the normal GPRS connection. The hard bit is that I want to do this without having a SIM card in the phone. I'm

  • I can't access iTunes Store or App Store featured on iTunes and iPhone

    I recently purchased some apps from the App Store on my iPhone and then tried to remove my payment card but my iPhone said it 'Can't connect to store' something along those lines. So to remove the payment card I used iTunes on my Windows PC. That wor