Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проверка существования таблицы, столбца  [new]
-MaD-
Member

Откуда:
Сообщений: 26
Возможно ли сделать что-то похожее но без использования динамического sql.
Oracle 9.2.0.6 WinNT

set serveroutput on size 100000

declare
  tbl_exists exception;
  pragma exception_init(tbl_exists, -00955);
begin
  execute immediate 'create table t1 (t1 number(5))';
  dbms_output.put_line('Table created');
exception
  when tbl_exists then
    dbms_output.put_line('Table already exists');
end;
/  

declare
  object_exists exception;
  pragma exception_init(object_exists, -01430);
begin
  execute immediate 'alter table t1 add t2 varchar2(50)';
  dbms_output.put_line('Table altered');
exception
  when object_exists then
    dbms_output.put_line('Column already exists');
end;
/  
4 июн 07, 11:46    [4225215]     Ответить | Цитировать Сообщить модератору
 Re: Проверка существования таблицы, столбца  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18482
user_tables
user_tab_columns
4 июн 07, 11:47    [4225220]     Ответить | Цитировать Сообщить модератору
 Re: Проверка существования таблицы, столбца  [new]
Elic
Member

Откуда:
Сообщений: 29976
RTFM Listing Information about Schema Objects (FAQ)
4 июн 07, 11:48    [4225229]     Ответить | Цитировать Сообщить модератору
 Re: Проверка существования таблицы, столбца  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Только не очень понятно, как заголовок относится с содержимым :) Это Вы так наличие проверяете? :)
4 июн 07, 11:54    [4225253]     Ответить | Цитировать Сообщить модератору
 Re: Проверка существования таблицы, столбца  [new]
-MaD-
Member

Откуда:
Сообщений: 26
Есть необходимость прогнать скрипт несколько раз,
Чтобы не сыпались ерроры нужно проверить а нет ли уже такой таблицы, не была ли добавлена колонка (в предыдущих запусках)

SQL> create table t1 (t1 number(5));

Table created

SQL> alter table t1 add t2 varchar2(50);

Table altered

SQL> alter table t1 add t2 varchar2(50);

alter table t1 add t2 varchar2(50)

ORA-01430: column being added already exists in table

SQL> 
4 июн 07, 11:57    [4225275]     Ответить | Цитировать Сообщить модератору
 Re: Проверка существования таблицы, столбца  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Так и в чем проблем - уйти от динамики-то все равно не удастся, она-то не для проверки.

Можно, конечно, вначале проверить, но ИМХО первый вариант и оставляйте, создаете общую процедуру с гашением "ненужных" эксепшенов и плодите таблички :)
4 июн 07, 12:06    [4225335]     Ответить | Цитировать Сообщить модератору
 Re: Проверка существования таблицы, столбца  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
-MaD-
Есть необходимость прогнать скрипт несколько раз,
Чтобы не сыпались ерроры нужно проверить а нет ли уже такой таблицы, не была ли добавлена колонка (в предыдущих запусках)

SQL> create table t1 (t1 number(5));

Table created

SQL> alter table t1 add t2 varchar2(50);

Table altered

SQL> alter table t1 add t2 varchar2(50);

alter table t1 add t2 varchar2(50)

ORA-01430: column being added already exists in table

SQL> 

фигней страдаете, имхо. ашипка=факт того что скрипт уже прогонялся.
4 июн 07, 12:38    [4225524]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить