在程序中删除一个表

Ale*_*das 6 oracle plsql oracle11g

可能重复:
Oracle:如果表存在
Drop表(如果存在)

我正在尝试创建此过程但我收到错误.

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;
Run Code Online (Sandbox Code Playgroud)

错误是:

错误(8,1):PLS-00103:当遇到以下情况之一时遇到符号"END":(如果循环mod为空pragma引发返回选择更新,则使用<< continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge.

你知道我做错了什么吗?

Daz*_*zaL 15

你需要将你的程序改为:

CREATE OR REPLACE PROCEDURE SP_VEXISTABLA(NOMBRE IN VARCHAR2)
IS
CANTIDAD NUMBER(3);
BEGIN
SELECT COUNT(*) INTO CANTIDAD FROM USER_TABLES WHERE TABLE_NAME = NOMBRE;
IF (CANTIDAD >0) THEN
    execute immediate 'DROP TABLE ' || NOMBRE;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)