Добавление базы данных в PLSQL для обработки исключений [дубликат]

Из документации Python:

Если есть больше позиционных аргументов, чем есть формальные слоты параметров, возникает исключение TypeError, если не присутствует формальный параметр с использованием синтаксического «* идентификатора» ; в этом случае этот формальный параметр получает кортеж, содержащий избыточные позиционные аргументы (или пустой кортеж, если не было избыточных позиционных аргументов).

Если какой-либо аргумент ключевого слова не соответствует формальному имени параметра, возникает исключение TypeError, если не присутствует формальный параметр с использованием синтаксиса «** identifier»; в этом случае этот формальный параметр получает словарь, содержащий избыточные аргументы ключевого слова (с использованием ключевых слов как ключей и значений аргументов в качестве соответствующих значений) или (новый) пустой словарь, если не было лишних аргументов ключевого слова.

1
задан Scott Anderson 12 January 2010 в 23:01
поделиться

3 ответа

Вы можете сделать что-то вроде этого:

DECLARE v_exist PLS_INTEGER;
BEGIN

SELECT COUNT(*) INTO v_exist
FROM user_tables
WHERE table_name = 'YOURTABLEHERE';

IF v_exist = 1 THEN
    EXECUTE IMMEDIATE 'DROP TABLE YOURTABLEHERE';
END IF;
7
ответ дан Scott Anderson 27 August 2018 в 09:40
поделиться

что-то вроде

select count(*) from user_tables 
where table_name= :table name

или

select count(*) from dba_tables
where owner = :table owner
and table_name = :table name

или тяжелая альтернатива:

begin execute immediate 'drop table table_name'; 
exception when others then null; 
end;
1
ответ дан davek 27 August 2018 в 09:40
поделиться

Я использовал следующую процедуру, чтобы позаботиться об этом:

create or replace procedure drop_table_if_exists ( p_table_name varchar2 )
is
  it_exist number;
begin
  select count(*) 
     into it_exists
     from user_tables
     where table_name = p_table_name
  ;
  if it_exists >= 1 then
    execute immediate 'drop table '||p_table_name;
  end if;
end;
/

exec drop_table_if_exists ( 'TABLE_TO_DROP' );
4
ответ дан Jon Heller 27 August 2018 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: