Почему drop table <несуществующая таблица> делает rollback?

сиська
Дата: 12.11.2008 10:01:26
??
сиська
Дата: 12.11.2008 10:02:15
при этом например truncate <несуществующая таблица> или alter user <несуществующий юзер> не делают этого
Вячеслав Любомудров
Дата: 12.11.2008 10:05:06
сиська
??
Да ну?
Вообще-то оно сделает COMMIT, как и любой DDL
andreymx
Дата: 12.11.2008 10:55:51
А почему это Вас так уж заинтересовало?
НУ И ЧТО?
SQL*Plus
Дата: 12.11.2008 11:32:02
сиська
??
А какие у вас доказательства?
pravednik
Дата: 12.11.2008 11:35:36
сиська,

Elapsed: 00:00:03.17
SQL> create table x (x number);

Table created.

Elapsed: 00:00:00.28
SQL> insert into x values (1);

1 row created.

Elapsed: 00:00:00.21
SQL> drop table asdhgfasjkdgfasj;
drop table asdhgfasjkdgfasj
           *
ERROR at line 1:
ORA-00942: table or view does not exist


Elapsed: 00:00:00.04
SQL> rollback;

Rollback complete.

Elapsed: 00:00:00.03
SQL> select * from x;

         X
----------
         1

Elapsed: 00:00:00.10
SQL>
orawish
Дата: 12.11.2008 11:50:15
вообще, при желании - легко.. ;)
create or replace procedure execcc (p varchar2) is
pragma autonomous_transaction;
begin
  execute immediate p;
  commit;
end;
/
create or replace procedure execc (p varchar2) is
begin
  execcc(p);
exception when others then
  rollback;
  dbms_output.put_line('ййооо:'||sqlerrm);
end;
/
drop table x purge;
create table x (x number);
insert into x values (1);
exec execc('drop table asdhgfasjkdgfasj')
select * from x;
сиська
Дата: 12.11.2008 12:10:03
да, верно, коммит делает
я ошибся

понял
drop table <несуществующая таблица>, хоть и не дропает никакую таблицу и выдает сообщение об ошибке, является правильно законченной и отработанной командой, т.е. полноценно выполненный DDL,
в отличие от, например
drop table +++;

всем спасибо
pravednik
Дата: 12.11.2008 12:17:13
сиська
да, верно, коммит делает
я ошибся

понял
drop table <несуществующая таблица>, хоть и не дропает никакую таблицу и выдает сообщение об ошибке, является правильно законченной и отработанной командой, т.е. полноценно выполненный DDL,
в отличие от, например
drop table +++;

всем спасибо

скорее всего, правильней будет "синтаксически правильный DDL"