oracle - 在过程中删除表

标签 oracle plsql oracle11g

Possible Duplicate:
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;

错误是:

Error(8,1): PLS-00103: Encountered the symbol "END" when expecting one of the following: ( begin case declare exit for goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge.

你知道我做错了什么吗?

最佳答案

您需要将程序更改为:

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;

关于oracle - 在过程中删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564641/

相关文章:

oracle - 在 Oracle 中使用触发器模拟 IDENTITY/AUTOINCREMENT 列有多糟糕?

oracle - 在Oracle中,当内部查询包含SDO_ANYINTERACT时,为什么不能在外部查询中选择rownum?

sql - Inner Join 与 Exists() 同时避免重复行

mysql - 将数据从一个表插入到另一个表但不需要主 ID

oracle - 如何从 Pl/SQL 中的存储函数返回临时 CLOB 实例?

oracle - 如何在 PL/SQL Developer 中轻松检查函数的返回值

SQL 与...更新

sql - PL/SQL插入一个表减去另一个表但同时插入另一列

windows - OleDbException (0x80004005) : Oracle client and networking components were not found. 我该如何解决这个问题?

sql - 如何在 Oracle 中将 NUMBER 转换为 VARCHAR2?