<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FPL_SQL_Programming%2FRaise_Exception</id>
		<title>Oracle PL/SQL Tutorial/PL SQL Programming/Raise Exception - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FPL_SQL_Programming%2FRaise_Exception"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Programming/Raise_Exception&amp;action=history"/>
		<updated>2026-05-23T22:12:49Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Programming/Raise_Exception&amp;diff=4055&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Programming/Raise_Exception&amp;diff=4055&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Programming/Raise_Exception&amp;diff=4056&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Programming/Raise_Exception&amp;diff=4056&amp;oldid=prev"/>
				<updated>2010-05-26T10:08:30Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Avoiding exceptions raised in declaration part and exception handler==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure p_validatezip (i_zipCode VARCHAR2)&lt;br /&gt;
  2  is&lt;br /&gt;
  3       e_tooShort EXCEPTION;&lt;br /&gt;
  4       e_tooLong  EXCEPTION;&lt;br /&gt;
  5       e_badZip   EXCEPTION;&lt;br /&gt;
  6       pragma exception_init(e_badZip, -20998);&lt;br /&gt;
  7       v_tempZip number:=to_number(i_zipCode);&lt;br /&gt;
  8  begin&lt;br /&gt;
  9       if length(i_zipCode)&amp;lt; 5 then&lt;br /&gt;
 10         raise e_tooShort;&lt;br /&gt;
 11       elsif  length(i_zipCode)&amp;gt; 6 then&lt;br /&gt;
 12         raise e_tooLong;&lt;br /&gt;
 13       end if;&lt;br /&gt;
 14  exception&lt;br /&gt;
 15       when e_tooLong then&lt;br /&gt;
 16          DBMS_OUTPUT.put_line(&amp;quot;long zip&amp;quot;);&lt;br /&gt;
 17          raise e_badZip;&lt;br /&gt;
 18       when e_tooShort then&lt;br /&gt;
 19          DBMS_OUTPUT.put_line(&amp;quot;short zip&amp;quot;);&lt;br /&gt;
 20       when VALUE_ERROR then&lt;br /&gt;
 21          DBMS_OUTPUT.put_line(&amp;quot;non-numeric zip&amp;quot;);&lt;br /&gt;
 22          raise e_badZip;&lt;br /&gt;
 23    end;&lt;br /&gt;
 24  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2&lt;br /&gt;
  3  begin&lt;br /&gt;
  4      p_validatezip(&amp;quot;9123412341234&amp;quot;);&lt;br /&gt;
  5  end;&lt;br /&gt;
  6  /&lt;br /&gt;
long zip&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-20998:&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.P_VALIDATEZIP&amp;quot;, line 17&lt;br /&gt;
ORA-06510: PL/SQL: unhandled user-defined exception&lt;br /&gt;
ORA-06512: at line 4&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Exceptions Raised in the Exception Handler==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure p_validatezip (i_zipCode VARCHAR2)&lt;br /&gt;
  2  is&lt;br /&gt;
  3       e_tooShort EXCEPTION;&lt;br /&gt;
  4       e_tooLong  EXCEPTION;&lt;br /&gt;
  5       e_badZip   EXCEPTION;&lt;br /&gt;
  6       pragma exception_init(e_badZip, -20998);&lt;br /&gt;
  7       v_tempZip NUMBER;&lt;br /&gt;
  8  begin&lt;br /&gt;
  9       if length(i_zipCode)&amp;lt; 5 then&lt;br /&gt;
 10         Raise e_tooShort;&lt;br /&gt;
 11       elsif  length(i_zipCode)&amp;gt; 6 then&lt;br /&gt;
 12         Raise e_tooLong;&lt;br /&gt;
 13       end if;&lt;br /&gt;
 14       v_tempZip := to_number(i_zipCode);&lt;br /&gt;
 15  exception&lt;br /&gt;
 16       when e_tooLong then&lt;br /&gt;
 17        raise e_badZip;&lt;br /&gt;
 18     when e_tooShort then&lt;br /&gt;
 19        raise e_badZip;&lt;br /&gt;
 20     when VALUE_ERROR then&lt;br /&gt;
 21        raise e_badZip;&lt;br /&gt;
 22     when e_badZip then&lt;br /&gt;
 23        DBMS_OUTPUT.put_line(&amp;quot;problem with Zip&amp;quot;);&lt;br /&gt;
 24        raise;&lt;br /&gt;
 25  end;&lt;br /&gt;
 26  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2      p_validatezip(&amp;quot;9406123123&amp;quot;);&lt;br /&gt;
  3  end;&lt;br /&gt;
  4  /&lt;br /&gt;
begin&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-20998:&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.P_VALIDATEZIP&amp;quot;, line 17&lt;br /&gt;
ORA-06510: PL/SQL: unhandled user-defined exception&lt;br /&gt;
ORA-06512: at line 2&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Propogating a Server-side Customized Error Number and Error Message to client program using PRAGMA EXCEPTION_INIT==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table company(&lt;br /&gt;
  2     product_id        number(4)    not null,&lt;br /&gt;
  3     company_id          NUMBER(8)    not null,&lt;br /&gt;
  4     company_short_name  varchar2(30) not null,&lt;br /&gt;
  5     company_long_name   varchar2(60)&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into company values(1,1001,&amp;quot;A Inc.&amp;quot;,&amp;quot;Long Name A Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(1,1002,&amp;quot;B Inc.&amp;quot;,&amp;quot;Long Name B Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(1,1003,&amp;quot;C Inc.&amp;quot;,&amp;quot;Long Name C Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(2,1004,&amp;quot;D Inc.&amp;quot;,&amp;quot;Long Name D Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(2,1005,&amp;quot;E Inc.&amp;quot;,&amp;quot;Long Name E Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(2,1006,&amp;quot;F Inc.&amp;quot;,&amp;quot;Long Name F Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE org_proc&lt;br /&gt;
  2                  (p_flag_in VARCHAR2,&lt;br /&gt;
  3                   p_product_id NUMBER,&lt;br /&gt;
  4                   p_company_id NUMBER,&lt;br /&gt;
  5                   p_company_short_name VARCHAR2,&lt;br /&gt;
  6                   p_company_long_name VARCHAR2)&lt;br /&gt;
  7  IS&lt;br /&gt;
  8    v_error_code NUMBER;&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10    IF (p_flag_in =&amp;quot;I&amp;quot;)THEN&lt;br /&gt;
 11      BEGIN&lt;br /&gt;
 12        INSERT INTO company VALUES (p_product_id,p_company_id,p_company_short_name,p_company_long_name);&lt;br /&gt;
 13      EXCEPTION WHEN OTHERS THEN&lt;br /&gt;
 14        v_error_code :=SQLCODE;&lt;br /&gt;
 15        IF v_error_code =-1 THEN&lt;br /&gt;
 16          RAISE_APPLICATION_ERROR(-20000,&amp;quot;Organization &amp;quot;||&lt;br /&gt;
 17          TO_CHAR(p_company_id)||&amp;quot; already exists.&amp;quot;);&lt;br /&gt;
 18        ELSIF v_error_code =-2291 THEN&lt;br /&gt;
 19          RAISE_APPLICATION_ERROR(-20001,&amp;quot;Invalid Hierarchy Code &amp;quot;||&lt;br /&gt;
 20          TO_CHAR(p_product_id)||&amp;quot; specified. Cannot create organization.&amp;quot;);&lt;br /&gt;
 21        END IF;&lt;br /&gt;
 22      END;&lt;br /&gt;
 23    ELSIF (p_flag_in =&amp;quot;C&amp;quot;)THEN&lt;br /&gt;
 24      BEGIN&lt;br /&gt;
 25        UPDATE company&lt;br /&gt;
 26        set company_short_name =p_company_short_name,&lt;br /&gt;
 27        company_long_name =p_company_long_name&lt;br /&gt;
 28        WHERE product_id =p_product_id&lt;br /&gt;
 29        AND company_id =p_company_id;&lt;br /&gt;
 30        IF SQL%NOTFOUND THEN&lt;br /&gt;
 31          RAISE_APPLICATION_ERROR(-20002,&amp;quot;Organization &amp;quot;||&lt;br /&gt;
 32          TO_CHAR(p_company_id)||&lt;br /&gt;
 33          &amp;quot; does not exist.&amp;quot;);&lt;br /&gt;
 34        END IF;&lt;br /&gt;
 35      END;&lt;br /&gt;
 36    ELSIF (p_flag_in =&amp;quot;D&amp;quot;)THEN&lt;br /&gt;
 37      BEGIN&lt;br /&gt;
 38        DELETE company&lt;br /&gt;
 39        WHERE product_id =p_product_id&lt;br /&gt;
 40        AND company_id =p_company_id;&lt;br /&gt;
 41        IF SQL%NOTFOUND THEN&lt;br /&gt;
 42          RAISE_APPLICATION_ERROR(-20003,&amp;quot;Organization &amp;quot;||&lt;br /&gt;
 43          TO_CHAR(p_company_id)||&lt;br /&gt;
 44          &amp;quot; does not exist. Cannot delete info for the same.&amp;quot;);&lt;br /&gt;
 45        END IF;&lt;br /&gt;
 46      EXCEPTION WHEN OTHERS THEN&lt;br /&gt;
 47        v_error_code :=SQLCODE;&lt;br /&gt;
 48        IF v_error_code =-2292 THEN&lt;br /&gt;
 49          RAISE_APPLICATION_ERROR(-20004,&amp;quot;Organization &amp;quot;||&lt;br /&gt;
 50          TO_CHAR(p_company_id)||&lt;br /&gt;
 51          &amp;quot; site details defined for it.&amp;quot;);&lt;br /&gt;
 52        END IF;&lt;br /&gt;
 53      END;&lt;br /&gt;
 54    END IF;&lt;br /&gt;
 55  END;&lt;br /&gt;
 56  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_product_id NUMBER := 6;&lt;br /&gt;
  3    v_company_id NUMBER := 1010;&lt;br /&gt;
  4    v_company_short_name VARCHAR2(30):= &amp;quot;O Inc.&amp;quot;;&lt;br /&gt;
  5    v_company_long_name VARCHAR2(60):= &amp;quot;O Inc.&amp;quot;;&lt;br /&gt;
  6    excep1 EXCEPTION;&lt;br /&gt;
  7    PRAGMA EXCEPTION_INIT(excep1,-20000);&lt;br /&gt;
  8    excep2 EXCEPTION;&lt;br /&gt;
  9    PRAGMA EXCEPTION_INIT(excep2,-20001);&lt;br /&gt;
 10  BEGIN&lt;br /&gt;
 11    org_proc(&amp;quot;I&amp;quot;,v_product_id,v_company_id,v_company_short_name,v_company_long_name);&lt;br /&gt;
 12  EXCEPTION&lt;br /&gt;
 13    WHEN excep1 or excep2 THEN&lt;br /&gt;
 14      DBMS_OUTPUT.PUT_LINE(SQLERRM);&lt;br /&gt;
 15    WHEN OTHERS THEN&lt;br /&gt;
 16      DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQLCODE)||SQLERRM);&lt;br /&gt;
 17  END;&lt;br /&gt;
 18  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table company;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Raise Exception in a function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2       quantity1 NUMBER := -2;&lt;br /&gt;
  3       quantity2 NUMBER := 3;&lt;br /&gt;
  4       total NUMBER := 0;&lt;br /&gt;
  5       quantity_must_positive EXCEPTION;&lt;br /&gt;
  6       FUNCTION find_cost (quant NUMBER) RETURN NUMBER IS&lt;br /&gt;
  7       BEGIN&lt;br /&gt;
  8            IF (quant &amp;gt; 0)&lt;br /&gt;
  9            THEN&lt;br /&gt;
 10                 RETURN(quant * 20);&lt;br /&gt;
 11            ELSE&lt;br /&gt;
 12                 RAISE quantity_must_positive;&lt;br /&gt;
 13            END IF;&lt;br /&gt;
 14       END find_cost;&lt;br /&gt;
 15  BEGIN&lt;br /&gt;
 16       total := find_cost (quantity2);&lt;br /&gt;
 17       total := total + find_cost(quantity1);&lt;br /&gt;
 18  EXCEPTION&lt;br /&gt;
 19       WHEN quantity_must_positive&lt;br /&gt;
 20       THEN&lt;br /&gt;
 21            dbms_output.put_line(&amp;quot;Total until now: &amp;quot; || total);&lt;br /&gt;
 22            dbms_output.put_line(&amp;quot;Tried to use negative quantity &amp;quot;);&lt;br /&gt;
 23  END;&lt;br /&gt;
 24  /&lt;br /&gt;
Total until now: 60&lt;br /&gt;
Tried to use negative quantity&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Raising a custom exception==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    e_TooManyEmployee EXCEPTION;  -- Exception to indicate an error condition&lt;br /&gt;
  3    v_CurrentEmployee NUMBER(3);&lt;br /&gt;
  4    v_MaxEmployee NUMBER(3);&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    v_CurrentEmployee := 5;&lt;br /&gt;
  9&lt;br /&gt;
 10    SELECT max(id)&lt;br /&gt;
 11      INTO v_MaxEmployee&lt;br /&gt;
 12      FROM employee;&lt;br /&gt;
 13&lt;br /&gt;
 14    IF v_CurrentEmployee &amp;gt; v_MaxEmployee THEN&lt;br /&gt;
 15      RAISE e_TooManyEmployee;&lt;br /&gt;
 16    END IF;&lt;br /&gt;
 17  END;&lt;br /&gt;
 18  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Raising an Exception in the Declaration Section==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure p_validatezip (i_zipCode VARCHAR2)&lt;br /&gt;
  2  is&lt;br /&gt;
  3       e_tooShort EXCEPTION;&lt;br /&gt;
  4       e_tooLong  EXCEPTION;&lt;br /&gt;
  5       e_badZip   EXCEPTION;&lt;br /&gt;
  6       pragma exception_init(e_badZip, -20998);&lt;br /&gt;
  7       v_tempZip number:=to_number(i_zipCode);&lt;br /&gt;
  8  begin&lt;br /&gt;
  9       if length(i_zipCode)&amp;lt; 5 then&lt;br /&gt;
 10         raise e_tooShort;&lt;br /&gt;
 11       elsif  length(i_zipCode)&amp;gt; 6 then&lt;br /&gt;
 12         raise e_tooLong;&lt;br /&gt;
 13       end if;&lt;br /&gt;
 14  exception&lt;br /&gt;
 15       when e_tooLong then&lt;br /&gt;
 16          DBMS_OUTPUT.put_line(&amp;quot;long zip&amp;quot;);&lt;br /&gt;
 17          raise e_badZip;&lt;br /&gt;
 18       when e_tooShort then&lt;br /&gt;
 19          DBMS_OUTPUT.put_line(&amp;quot;short zip&amp;quot;);&lt;br /&gt;
 20       when VALUE_ERROR then&lt;br /&gt;
 21          DBMS_OUTPUT.put_line(&amp;quot;non-numeric zip&amp;quot;);&lt;br /&gt;
 22          raise e_badZip;&lt;br /&gt;
 23    end;&lt;br /&gt;
 24  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2&lt;br /&gt;
  3  begin&lt;br /&gt;
  4      p_validatezip(&amp;quot;9123412341234&amp;quot;);&lt;br /&gt;
  5  end;&lt;br /&gt;
  6  /&lt;br /&gt;
long zip&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-20998:&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.P_VALIDATEZIP&amp;quot;, line 17&lt;br /&gt;
ORA-06510: PL/SQL: unhandled user-defined exception&lt;br /&gt;
ORA-06512: at line 4&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Raising an Exception Local PL/SQL Block==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace function f_get_speed(i_distance NUMBER, i_timeSec NUMBER)&lt;br /&gt;
  2  return NUMBER&lt;br /&gt;
  3  is&lt;br /&gt;
  4    v_out NUMBER;&lt;br /&gt;
  5  begin&lt;br /&gt;
  6&lt;br /&gt;
  7    begin&lt;br /&gt;
  8      v_out:= i_distance/i_timeSec;&lt;br /&gt;
  9    exception&lt;br /&gt;
 10        when zero_divide then&lt;br /&gt;
 11        DBMS_OUTPUT.put_line(&amp;quot;Divide by zero in the F_GET_SPEED&amp;quot;);&lt;br /&gt;
 12    end;&lt;br /&gt;
 13    return v_out;&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select f_get_speed(1, 0) from dual;&lt;br /&gt;
F_GET_SPEED(1,0)&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
Divide by zero in the F_GET_SPEED&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Raising NO_DATA_FOUND==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE t_NumberTableType IS TABLE OF NUMBER&lt;br /&gt;
  3      INDEX BY BINARY_INTEGER;&lt;br /&gt;
  4    v_NumberTable t_NumberTableType;&lt;br /&gt;
  5    v_TempVar NUMBER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    v_TempVar := v_NumberTable(1);&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
DECLARE&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-01403: no data found&lt;br /&gt;
ORA-06512: at line 7&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== User-Defined Errors==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Users can explicitly raise an exception with the RAISE command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Steps for trapping a user-defined error include the following:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Declare the name for the user exception within the declaration section of the block.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Raise the exception explicitly within the executable portion of the block using the RAISE command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Reference the declared exception with an error-handling routine.&amp;lt;/p&amp;gt;&lt;br /&gt;
24. 16. Raise Exception&lt;br /&gt;
24. 16. 1. &lt;br /&gt;
User-Defined Errors&lt;br /&gt;
24. 16. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/RaiseExceptioninafunction.htm&amp;quot;&amp;gt;Raise Exception in a function&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 3. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/RaisinganExceptionLocalPLSQLBlock.htm&amp;quot;&amp;gt;Raising an Exception Local PL/SQL Block&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/Avoidingexceptionsraisedindeclarationpartandexceptionhandler.htm&amp;quot;&amp;gt;Avoiding exceptions raised in declaration part and exception handler&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/RaisinganExceptionintheDeclarationSection.htm&amp;quot;&amp;gt;Raising an Exception in the Declaration Section&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/ExceptionsRaisedintheExceptionHandler.htm&amp;quot;&amp;gt;Exceptions Raised in the Exception Handler&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 7. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/RaisingNODATAFOUND.htm&amp;quot;&amp;gt;Raising NO_DATA_FOUND&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 8. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/Raisingacustomexception.htm&amp;quot;&amp;gt;Raising a custom exception&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 9. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/UsingWHENOTHERSclause.htm&amp;quot;&amp;gt;Using WHEN OTHERS clause&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 10. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/UsingSQLCODEandSQLERRM.htm&amp;quot;&amp;gt;Using SQLCODE and SQLERRM&amp;lt;/a&amp;gt;&lt;br /&gt;
24. 16. 11. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0480__PL-SQL-Programming/PropogatingaServersideCustomizedErrorNumberandErrorMessagetoclientprogramusingPRAGMAEXCEPTIONINIT.htm&amp;quot;&amp;gt;Propogating a Server-side Customized Error Number and Error Message to client program using PRAGMA EXCEPTION_INIT&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using SQLCODE and SQLERRM==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table product(&lt;br /&gt;
  2     product_id number(4)     not null,&lt;br /&gt;
  3     product_description varchar2(20) not null&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into product values (1,&amp;quot;Java&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (2,&amp;quot;Oracle&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (3,&amp;quot;C#&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (4,&amp;quot;Javascript&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (5,&amp;quot;Python&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_descr VARCHAR2(20);&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    SELECT product_description&lt;br /&gt;
  5    INTO v_descr&lt;br /&gt;
  6    FROM product&lt;br /&gt;
  7    WHERE product_id =10;&lt;br /&gt;
  8    dbms_output.put_line(v_descr);&lt;br /&gt;
  9  EXCEPTION&lt;br /&gt;
 10    WHEN NO_DATA_FOUND THEN&lt;br /&gt;
 11    dbms_output.put_line(&amp;quot;ERR:Invalid Hierarchy Code 10&amp;quot;);&lt;br /&gt;
 12    WHEN OTHERS THEN&lt;br /&gt;
 13      dbms_output.put_line(&amp;quot;ERR:An error occurred with info :&amp;quot;||&lt;br /&gt;
 14      TO_CHAR(SQLCODE)||&amp;quot; &amp;quot;||SQLERRM);&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
ERR:Invalid Hierarchy Code 10&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table product;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Using WHEN OTHERS clause==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table product(&lt;br /&gt;
  2     product_id number(4)     not null,&lt;br /&gt;
  3     product_description varchar2(20) not null&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into product values (1,&amp;quot;Java&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (2,&amp;quot;Oracle&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (3,&amp;quot;C#&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (4,&amp;quot;Javascript&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (5,&amp;quot;Python&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_descr VARCHAR2(20);&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    SELECT product_description&lt;br /&gt;
  5    INTO v_descr&lt;br /&gt;
  6    FROM product&lt;br /&gt;
  7    WHERE product_id =10;&lt;br /&gt;
  8    dbms_output.put_line(v_descr);&lt;br /&gt;
  9  EXCEPTION WHEN OTHERS THEN&lt;br /&gt;
 10    dbms_output.put_line(&amp;quot;ERR:Invalid Hierarchy Code 10&amp;quot;);&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
ERR:Invalid Hierarchy Code 10&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table product;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>