<?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%2FPL_SQL%2FHandle_Exception</id>
		<title>Oracle PL/SQL/PL SQL/Handle 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%2FPL_SQL%2FHandle_Exception"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Handle_Exception&amp;action=history"/>
		<updated>2026-05-24T08:05:17Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Handle_Exception&amp;diff=1813&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/PL_SQL/Handle_Exception&amp;diff=1813&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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/PL_SQL/Handle_Exception&amp;diff=1814&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/PL_SQL/Handle_Exception&amp;diff=1814&amp;oldid=prev"/>
				<updated>2010-05-26T09:59:04Z</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;==A procedure that uses a 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;
   &lt;br /&gt;
SQL&amp;gt; -- Here is an example of a procedure that uses a WHEN OTHERS clause:&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;     CREATE OR REPLACE PROCEDURE add_new_employee&lt;br /&gt;
  2          (employee_id_in IN NUMBER, salary_in IN NUMBER)&lt;br /&gt;
  3      IS&lt;br /&gt;
  4          no_salary EXCEPTION;&lt;br /&gt;
  5&lt;br /&gt;
  6      BEGIN&lt;br /&gt;
  7          IF salary_in = 0 THEN&lt;br /&gt;
  8              RAISE no_salary;&lt;br /&gt;
  9          ELSE&lt;br /&gt;
 10              INSERT INTO employee (id, salary ) VALUES ( employee_id_in, salary_in );&lt;br /&gt;
 11      END IF;&lt;br /&gt;
 12&lt;br /&gt;
 13      EXCEPTION&lt;br /&gt;
 14           WHEN no_salary THEN&lt;br /&gt;
 15              raise_application_error (-20001,&amp;quot;You must have salary in order to insert the employee.&amp;quot;);&lt;br /&gt;
 16&lt;br /&gt;
 17           WHEN OTHERS THEN&lt;br /&gt;
 18              raise_application_error (-20002,&amp;quot;When other.&amp;quot;);&lt;br /&gt;
 19&lt;br /&gt;
 20      END;&lt;br /&gt;
 21      /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec add_new_employee(&amp;quot;99&amp;quot;,0);&lt;br /&gt;
BEGIN add_new_employee(&amp;quot;99&amp;quot;,0); END;&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-20001: You must have salary in order to insert the employee.&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.ADD_NEW_EMPLOYEE&amp;quot;, line 15&lt;br /&gt;
ORA-06512: at line 1&lt;br /&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.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Check and output sqlcode 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  declare&lt;br /&gt;
  2      l_emp emp%rowtype;&lt;br /&gt;
  3    begin&lt;br /&gt;
  4      select *&lt;br /&gt;
  5        into l_emp&lt;br /&gt;
  6        from emp;&lt;br /&gt;
  7       dbms_output.put_line(&amp;quot;EMPNO: &amp;quot; || l_emp.empno);&lt;br /&gt;
  8      dbms_output.put_line(&amp;quot;ENAME: &amp;quot; || l_emp.ename);&lt;br /&gt;
  9    exception&lt;br /&gt;
 10      when others then&lt;br /&gt;
 11        dbms_output.put(&amp;quot;Exception encountered! (&amp;quot;);&lt;br /&gt;
 12        dbms_output.put_line(sqlcode || &amp;quot;): &amp;quot; || sqlerrm);&lt;br /&gt;
 13        raise;&lt;br /&gt;
 14    end;&lt;br /&gt;
 15    /&lt;br /&gt;
Exception encountered! (-1422): ORA-01422: exact fetch returns more than requested number of rows&lt;br /&gt;
 declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-01422: exact fetch returns more than requested number of rows&lt;br /&gt;
ORA-06512: at line 13&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generic error handling to handle any type of error==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      str  varchar2(50);&lt;br /&gt;
  3  begin&lt;br /&gt;
  4      str := &amp;quot;CAT&amp;quot;;&lt;br /&gt;
  5  exception&lt;br /&gt;
  6      when others then&lt;br /&gt;
  7          raise_application_error (-20100, &amp;quot;error#&amp;quot; || sqlcode || &amp;quot; desc: &amp;quot; || sqlerrm);&lt;br /&gt;
  8  end;&lt;br /&gt;
  9  /&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;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==noroom 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;
    &lt;br /&gt;
SQL&amp;gt; CREATE TABLE myHotel(&lt;br /&gt;
  2     room_id INTEGER,&lt;br /&gt;
  3     resident_count INTEGER,&lt;br /&gt;
  4     room_capacity INTEGER,&lt;br /&gt;
  5     name VARCHAR2(20)&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myHotel(room_id, resident_count, room_capacity, name) VALUES(101, 20, 20, &amp;quot;First Room&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO myHotel(room_id, resident_count, room_capacity, name) VALUES(102, 19, 20, &amp;quot;Second Room&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO myHotel(room_id, resident_count, room_capacity, name) VALUES(103, 10, 20, &amp;quot;Third Room&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO myHotel(room_id, resident_count, room_capacity, name) VALUES(104, 0, 20, &amp;quot;Fourth Room&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE addstudent (roomin IN INTEGER)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     roomname       VARCHAR2 (20);&lt;br /&gt;
  4     residentcount   PLS_INTEGER;&lt;br /&gt;
  5     capacity       PLS_INTEGER;&lt;br /&gt;
  6     noroom         EXCEPTION;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8     SELECT resident_count, room_capacity, name&lt;br /&gt;
  9       INTO residentcount, capacity, roomname&lt;br /&gt;
 10       FROM myHotel&lt;br /&gt;
 11      WHERE room_id = roomin;&lt;br /&gt;
 12&lt;br /&gt;
 13     IF residentcount &amp;gt; capacity - 1&lt;br /&gt;
 14     THEN&lt;br /&gt;
 15        RAISE noroom;&lt;br /&gt;
 16     ELSE&lt;br /&gt;
 17        UPDATE myHotel&lt;br /&gt;
 18        SET resident_count = residentcount + 1&lt;br /&gt;
 19        WHERE room_id = roomin;&lt;br /&gt;
 20        COMMIT;&lt;br /&gt;
 21        DBMS_OUTPUT.put_line (&amp;quot;Student count:&amp;quot;||residentcount||&amp;quot; in &amp;quot;|| roomname);&lt;br /&gt;
 22     END IF;&lt;br /&gt;
 23  EXCEPTION&lt;br /&gt;
 24     WHEN noroom&lt;br /&gt;
 25     THEN&lt;br /&gt;
 26        DBMS_OUTPUT.put_line (&amp;quot;There is no room in &amp;quot; || roomname);&lt;br /&gt;
 27     WHEN OTHERS&lt;br /&gt;
 28     THEN&lt;br /&gt;
 29        DBMS_OUTPUT.put_line (&amp;quot;Error &amp;quot; || SQLERRM || &amp;quot; occurred.&amp;quot;);&lt;br /&gt;
 30  END;&lt;br /&gt;
 31  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myHotel;&lt;br /&gt;
Table dropped.&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;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use exception handler to mark success flag==&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;
    &lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (&lt;br /&gt;
  2    emp_id               NUMBER,&lt;br /&gt;
  3    ename             VARCHAR2(40),&lt;br /&gt;
  4    hire_date        DATE DEFAULT sysdate,&lt;br /&gt;
  5    end_date DATE,&lt;br /&gt;
  6    rate     NUMBER(5,2),&lt;br /&gt;
  7    CONSTRAINT emp_pk    PRIMARY KEY (emp_id)&lt;br /&gt;
  8  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (101, &amp;quot;Mary&amp;quot;, to_date(&amp;quot;15-Nov-1961&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),null,169);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (102, &amp;quot;Tom&amp;quot;, to_date(&amp;quot;16-Sep-1964&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),to_date(&amp;quot;5-May-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),135);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (104, &amp;quot;Peter&amp;quot;, to_date(&amp;quot;29-Dec-1987&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),to_date(&amp;quot;1-Apr-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),99);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (105, &amp;quot;Mike&amp;quot;, to_date(&amp;quot;15-Jun-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),null,121);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (107, &amp;quot;Less&amp;quot;, to_date(&amp;quot;2-Jan-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),null,45);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (108, &amp;quot;Park&amp;quot;, to_date(&amp;quot;1-Mar-1994&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),to_date(&amp;quot;15-Nov-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),220);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (110, &amp;quot;Ink&amp;quot;, to_date(&amp;quot;4-Apr-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),to_date(&amp;quot;30-Sep-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),84);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (111, &amp;quot;Tike&amp;quot;, to_date(&amp;quot;23-Aug-1976&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),null,100);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (112, &amp;quot;Inn&amp;quot;, to_date(&amp;quot;15-Nov-1961&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),to_date(&amp;quot;4-Apr-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),70);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp(emp_id, ename, hire_date,end_date, rate)VALUES (113, &amp;quot;Kate&amp;quot;, to_date(&amp;quot;3-Mar-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),to_date(&amp;quot;31-Oct-2004&amp;quot;,&amp;quot;dd-mon-yyyy&amp;quot;),300);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    success_flag BOOLEAN;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      UPDATE emp&lt;br /&gt;
  6         SET rate = rate * 1.10;&lt;br /&gt;
  7      success_flag := TRUE;&lt;br /&gt;
  8    EXCEPTION&lt;br /&gt;
  9      WHEN OTHERS THEN&lt;br /&gt;
 10        success_flag := false;&lt;br /&gt;
 11    END;&lt;br /&gt;
 12&lt;br /&gt;
 13    IF success_flag THEN&lt;br /&gt;
 14      COMMIT;&lt;br /&gt;
 15    ELSE&lt;br /&gt;
 16      ROLLBACK;&lt;br /&gt;
 17      DBMS_OUTPUT.PUT_LINE(&amp;quot;The UPDATE failed.&amp;quot;);&lt;br /&gt;
 18      RAISE_APPLICATION_ERROR (-20000,&lt;br /&gt;
 19     &amp;quot;The UPDATE of emp billing rates failed.&amp;quot;);&lt;br /&gt;
 20    END IF;&lt;br /&gt;
 21  END;&lt;br /&gt;
 22  /&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 emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>