Можно создать дубликат:
Oracle: If Table Exists
Drop table if it existsОтбросьте таблицу в процедуре
Я пытаюсь создать эту процедуру, но я получаю сообщение об ошибке.
CREATE OR REPLACE PROCEDURE SP_VEXISTABLA(NOMBRE IN VARCHAR2)
IS
CANTIDAD NUMBER(3);
BEGIN
SELECT COUNT(*) INTO CANTIDAD FROM ALL_OBJECTS WHERE OBJECT_NAME = NOMBRE;
IF (CANTIDAD >0) THEN
DROP TABLE NOMBRE;
END IF;
END;
Ошибка:
Ошибка (8,1): PLS-00103: Встречающиеся символ "END", когда ожидается одно из следующих действий: (начинают случай объявить выход для Goto, если цикл мод нулевой прагмы рейз возвращение выберите обновление в то время как с < < продолжают закрывать текущие удаления выборки предохранительного вкладыша набор открытой откат точки сохранения SQL выполнить коммит FORALL слияния продувки труб.
вы знаете, что я делаю не так ли?
Какой инструмент вы используете для запуска этого? –
Oracle sql developer Версия 3.2.20.09 –
Нельзя использовать операторы DDL ('DROP TABLE NOMBRE;' в этом случае) внутри блока PL/SQL. Чтобы выполнить оператор DDL внутри блока PL/SQL, вам придется использовать динамический SQL: 'execute instant 'DROP TABLE NOMBRE';' например. –