Я новичок в PL SQL, и мне нужно проверить, существует ли таблица на сервере, и удалить ее.
Заранее спасибо, Горан
вы можете запросить имена вкладок
select tname from tab where tname = 'TABLE_NAME_TO_SEARCH_FOR';
Вот где проявляется истинная сила информационной схемы. Простой запрос укажет вам правильное направление
SELECT
*
FROM
information_schema.tables
WHERE
table_name='salesorders';
Затем это можно использовать в функции plpg
CREATE OR REPLACE FUNCTION table_exists(v_table text)
RETURNS boolean AS
$BODY$
DECLARE
v_count int;
v_sql text;
BEGIN
v_sql =
'SELECT ' ||
' count(1) ' ||
'FROM ' ||
' information_schema.tables ' ||
'WHERE ' ||
E' table_name=\'' || v_table || E'\'';
EXECUTE v_sql INTO v_count;
RETURN v_count>0;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
Используйте функцию
select * from table_exists('salesordesrs');
Этого должно быть достаточно для начала работы.
OOPS Похоже, я неправильно понял вопрос автора. Я ответил для PostgreSQL.
Питер.
Самый эффективный метод - не надо. Просто бросьте стол. Если таблица еще не существует, это вызовет исключение.
Выполнение запроса непосредственно перед отбрасыванием таблицы - это просто трата времени на то, что Oracle сделает за вас автоматически.
Вы можете обрабатывать исключение, как хотите, например:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE "MYTABLE"';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -942 THEN
DBMS_OUTPUT.put_line('the table did not exist!');
ELSE
RAISE;
END IF;
END;