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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Transaction&amp;diff=1923&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/Transaction&amp;diff=1923&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/Transaction&amp;diff=1924&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/Transaction&amp;diff=1924&amp;oldid=prev"/>
				<updated>2010-05-26T09:59:34Z</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;==Autonomous transactions.==&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; CREATE TABLE MyTable (&lt;br /&gt;
  2    num_col    NUMBER,&lt;br /&gt;
  3    char_col   VARCHAR2(60)&lt;br /&gt;
  4    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE Autonomous AS&lt;br /&gt;
  2    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    INSERT INTO MyTable VALUES (-10, &amp;quot;Hello from Autonomous!&amp;quot;);&lt;br /&gt;
  5    COMMIT;&lt;br /&gt;
  6  END Autonomous;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    INSERT INTO MyTable VALUES (-10, &amp;quot;Hello from the parent!&amp;quot;);&lt;br /&gt;
  3&lt;br /&gt;
  4    Autonomous;&lt;br /&gt;
  5&lt;br /&gt;
  6    ROLLBACK;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
BEGIN&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00034: cannot COMMIT in current PL/SQL session&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.AUTONOMOUS&amp;quot;, line 5&lt;br /&gt;
ORA-06512: at line 4&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM MyTable WHERE num_col = -10;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    INSERT INTO MyTable (num_col) VALUES (1);&lt;br /&gt;
  5  END;&lt;br /&gt;
  6  /&lt;br /&gt;
DECLARE&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-06519: active autonomous transaction detected and rolled back&lt;br /&gt;
ORA-06512: at line 5&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table MyTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Calling an autonomous function from SQL.==&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 MyTable (&lt;br /&gt;
  2    num_col    NUMBER,&lt;br /&gt;
  3    char_col   VARCHAR2(60)&lt;br /&gt;
  4    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION LogParam(p1 IN NUMBER)&lt;br /&gt;
  2    RETURN NUMBER AS&lt;br /&gt;
  3    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    INSERT INTO MyTable (num_col, char_col)&lt;br /&gt;
  6      VALUES (p1, &amp;quot;Logged!&amp;quot;);&lt;br /&gt;
  7    COMMIT;&lt;br /&gt;
  8    RETURN p1;&lt;br /&gt;
  9  END LogParam;&lt;br /&gt;
 10  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT LogParam(1) FROM dual;&lt;br /&gt;
SELECT LogParam(1) FROM dual&lt;br /&gt;
       *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00034: cannot COMMIT in current PL/SQL session&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.LOGPARAM&amp;quot;, line 7&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT num_col&lt;br /&gt;
  2    FROM MyTable&lt;br /&gt;
  3    WHERE char_col = &amp;quot;Logged!&amp;quot;;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table MyTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Commit an insert statement in PL SQL==&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; create table t ( x int );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2          for i in 1 .. 100000&lt;br /&gt;
  3          loop&lt;br /&gt;
  4                  insert into t values ( i );&lt;br /&gt;
  5                  commit ;&lt;br /&gt;
  6          end loop;&lt;br /&gt;
  7  end;&lt;br /&gt;
  8  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&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;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==interaction between savepoints and autonomous transactions.==&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; CREATE TABLE MyTable (&lt;br /&gt;
  2    num_col    NUMBER,&lt;br /&gt;
  3    char_col   VARCHAR2(60)&lt;br /&gt;
  4    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE AutoProc AS&lt;br /&gt;
  2    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    ROLLBACK TO SAVEPOINT A;&lt;br /&gt;
  5  END AutoProc;&lt;br /&gt;
  6  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    SAVEPOINT A;&lt;br /&gt;
  3    INSERT INTO MyTable (char_col)&lt;br /&gt;
  4      VALUES (&amp;quot;Savepoint A!&amp;quot;);&lt;br /&gt;
  5    AutoProc;&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
BEGIN&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00034: cannot ROLLBACK in current PL/SQL session&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.AUTOPROC&amp;quot;, line 4&lt;br /&gt;
ORA-06512: at line 5&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table MyTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==set transaction use rollback segment==&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;
  2&lt;br /&gt;
SQL&amp;gt; create table t&lt;br /&gt;
  2  as&lt;br /&gt;
  3  select * from all_objects;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt; drop table done;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; create table done( object_id int );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into done values ( 0 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2          l_cnt number;&lt;br /&gt;
  3          l_max number;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5          select object_id into l_cnt from done;&lt;br /&gt;
  6          select max(object_id) into l_max from t;&lt;br /&gt;
  7&lt;br /&gt;
  8          while ( l_cnt &amp;lt; l_max )&lt;br /&gt;
  9          loop&lt;br /&gt;
 10                  update t&lt;br /&gt;
 11                     set object_name = lower(object_name)&lt;br /&gt;
 12                   where object_id &amp;gt; l_cnt&lt;br /&gt;
 13                     and object_id &amp;lt;= l_cnt+100;&lt;br /&gt;
 14&lt;br /&gt;
 15                  update done set object_id = object_id+100;&lt;br /&gt;
 16&lt;br /&gt;
 17                  commit;&lt;br /&gt;
 18                  set transaction use rollback segment rbs_small;&lt;br /&gt;
 19                  l_cnt := l_cnt + 100;&lt;br /&gt;
 20          end loop;&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; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The pragma is legal in top-level anonymous blocks:==&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; DECLARE&lt;br /&gt;
  2    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    COMMIT;&lt;br /&gt;
  5  END;&lt;br /&gt;
  6  /&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;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The pragma is not legal in nested blocks:==&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; BEGIN&lt;br /&gt;
  2    DECLARE&lt;br /&gt;
  3      PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      COMMIT;&lt;br /&gt;
  6    END;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
           *&lt;br /&gt;
ERROR at line 3:&lt;br /&gt;
ORA-06550: line 3, column 12:&lt;br /&gt;
PLS-00710: PRAGMA AUTONOMOUS_TRANSACTION cannot be specified here&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The pragma is valid in a packaged procedure.==&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 OR REPLACE PACKAGE Auto2 AS&lt;br /&gt;
  2    PROCEDURE P;&lt;br /&gt;
  3  END Auto2;&lt;br /&gt;
  4  /&lt;br /&gt;
Package created.&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; CREATE OR REPLACE PACKAGE BODY Auto2 AS&lt;br /&gt;
  2    PROCEDURE P IS&lt;br /&gt;
  3      PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      COMMIT;&lt;br /&gt;
  6    END P;&lt;br /&gt;
  7  END Auto2;&lt;br /&gt;
  8  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The pragma is valid in both standalone and local subprograms.==&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; CREATE OR REPLACE PROCEDURE Auto1 AS&lt;br /&gt;
  2    PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  3&lt;br /&gt;
  4    PROCEDURE Local IS&lt;br /&gt;
  5      PRAGMA AUTONOMOUS_TRANSACTION;&lt;br /&gt;
  6    BEGIN&lt;br /&gt;
  7      ROLLBACK;&lt;br /&gt;
  8    END Local;&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10    Local;&lt;br /&gt;
 11    COMMIT;&lt;br /&gt;
 12  END Auto1;&lt;br /&gt;
 13  /&lt;br /&gt;
Procedure created.&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;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>