study/oracle/oracle编程艺术/chapt8/autonomous_insert.sql

60 lines
1.1 KiB
SQL

prompt
prompt eoda.t
declare
num number;
begin
select count(1) into num from user_tables where table_name = upper( 't' );
if num = 1 then
execute immediate 'drop table eoda.t';
end if;
execute immediate '
create table eoda.t ( msg varchar2(25) )
';
end;
/
prompt
prompt eoda.Autonomous_insert
create or replace procedure eoda.Autonomous_insert
as
pragma autonomous_transaction;
begin
insert into eoda.t values ( 'Autonomous Insert' );
commit;
end;
/
prompt
prompt eoda.NonAutonomous_insert
create or replace procedure eoda.NonAutonomous_insert
as
begin
insert into eoda.t values ( 'NonAutonomous Insert' );
commit;
end;
/
prompt
prompt eoda.NonAutonomous_insert
begin
insert into eoda.t values ( 'Anonymous Block' );
NonAutonomous_insert;
rollback;
end;
/
select * from eoda.t;
prompt
prompt edoa.Autonomous_insert
begin
execute immediate 'truncate table eoda.t';
insert into eoda.t values ( 'Anonymous Block' );
Autonomous_insert;
rollback;
end;
/
select * from eoda.t;