обработка исключений sql - PullRequest
1 голос
/ 04 апреля 2010
CREATE OR REPLACE PROCEDURE p_createLocaltable
IS
  table_already_exist EXCEPTION;
  PRAGMA  EXCEPTION_INIT (table_already_exist, -00955);
BEGIN
  create table local_table as
  select * from supplied_table 
  where rownum < 1;
EXCEPTION
  when table_already_exist then
    DBMS_OUTPUT.put_line('Table already exists , does not need to recreate it');
END;

Кто-нибудь может увидеть какие-либо проблемы из приведенного выше кода?

1 Ответ

4 голосов
/ 04 апреля 2010

Вы не можете сделать DDL в PL / SQL-блоке подобным образом.Вам нужно будет использовать команду «выполнить немедленно».

Вам нужно будет сделать это следующим образом

CREATE OR REPLACE PROCEDURE p_createLocaltable
IS
  table_already_exist EXCEPTION;
  PRAGMA  EXCEPTION_INIT (table_already_exist, -00955);
BEGIN
  execute immediate 'create table local_objects as select * from all_objects where 1=0';
EXCEPTION
  when table_already_exist then
    DBMS_OUTPUT.put_line('Table already exists , does not need to recreate it');
END;

Проверьте страницу orafaq на этой странице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...