<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
        <title>prg - PL/SQL ►</title>
        <link>http://prg.mozellosite.com/jazyki/plsql/</link>
        <description>prg - PL/SQL ►</description>
                    <item>
                <title>Типы исключений в PL/SQL</title>
                <link>http://prg.mozellosite.com/jazyki/plsql/params/post/665056/tipy-iskljuchenij-v-plsql</link>
                <pubDate>Thu, 17 Dec 2015 07:04:00 +0000</pubDate>
                <description>&lt;p class=&quot;moze-justify&quot;&gt;&lt;b&gt;Исключения PL/SQL&lt;/b&gt;&lt;/p&gt;
&lt;p class=&quot;moze-justify&quot;&gt;
Исключение - это переменная в PL/SQL, возбуждаемая во время выполнения блока.
В случае возбуждения исключения (исключительной ситуации), блок всегда прекращает
работу, но можно задать обработчик исключения для выполнения заключительных действий.&lt;/p&gt;&lt;hr class=&quot;moze-more-divider&quot; align=&quot;justify&quot;&gt;&lt;p class=&quot;moze-justify&quot;&gt;&lt;/p&gt;

&lt;p class=&quot;moze-justify&quot;&gt;
Имеется два вида возбуждения исключений: 

&lt;/p&gt;&lt;div class=&quot;moze-justify&quot;&gt;&lt;ol&gt;&lt;li&gt;Имеет место ошибка ORACLE, и соответствующее исключение возбуждается автоматически 
 (например, если команда SELECT не возвращает ни одной строки, в блоке возникает ошибка
 ORA-01403 и возбуждается исключение NO_DATA_FOUND); 
 &lt;/li&gt;&lt;li&gt;Исключение возбуждается явно с помощью команды RAISE в блоке (это может быть предопределенное или пользовательское исключение). 
&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;


&lt;p class=&quot;moze-justify&quot;&gt;&lt;b&gt;Типы исключений&lt;/b&gt;&lt;/p&gt;
&lt;p class=&quot;moze-justify&quot;&gt;
Имеется 3 типа исключений:
&lt;/p&gt;
&lt;table cellspacing=&quot;2&quot; width=&quot;100%&quot; align=&quot;justify&quot;&gt;
 &lt;tbody&gt;&lt;tr&gt;
  &lt;th&gt;
   &lt;b&gt;Исключение&lt;/b&gt;
  &lt;/th&gt;
  &lt;th&gt;
   &lt;b&gt;Описание&lt;/b&gt;
  &lt;/th&gt;
  &lt;th&gt;&lt;b&gt;
   Указания по обработке
  &lt;/b&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;
   Предопределенное исключение, возбуждаемое сервером
  &lt;/td&gt;
  &lt;td&gt;
   Одна из примерно 20 типичных ошибок, возникающих при выполнении PL/SQL
  &lt;/td&gt;
  &lt;td&gt;
   Описания не требуется.
   Явного возбуждения не требуется
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;
   Непредопределенное исключение, возбуждаемое сервером
  &lt;/td&gt;
  &lt;td&gt;
   Любая стандартная ошибка сервера (не входящая в число предопределенных)
  &lt;/td&gt;
  &lt;td&gt;
   Исключение должно быть объявлено в декларативной секции.
   Явного возбуждения не требуется.
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;
   Пользовательское исключение
  &lt;/td&gt;
  &lt;td&gt;
   Условие, которое разработчик считает ошибочным
  &lt;/td&gt;
  &lt;td&gt;
   Исключение должно быть объявлено в декларативной секции.
   Требует явного возбуждения.
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p class=&quot;moze-justify&quot;&gt;
Таблица некоторых предопределенных исключений.
&lt;/p&gt;


 
  &lt;b&gt;
   Имя исключения
  &lt;/b&gt;
  
   &lt;b&gt;Ошибка&amp;nbsp;&lt;/b&gt;
  
  
   &lt;b&gt;Описание&lt;/b&gt;
  
 
 
  
   NO_DATA_FOUND
  
  
   ORA-01403
  
  
   Однострочная команда SELECT не возвращает ни одной строки 
  
 
 
  
   TOO_MANY_ROWS
  
  
   ORA-01422
  
  
   Однострочная команда SELECT возвращает более одной строки
  
 
 
  
   INVALID_NUMBER
  
  
   ORA-01722
  
  
   Неудачная попытка преобразования строки в число
  
 
 
  
   NOT_LOGGED_ON
  
  
   ORA-01012
  
  
   Программа PL/SQL обращается к БД, не подключившись к Oracle.
  
 
 
  
   ZERO_DIVIDE
  
  
   ORA-01476
  
  
   Попытка деления на нуль.
  
 
  
  
   ...
  
  
   ...
  
  
   ...</description>
            </item>
            </channel>
</rss>