在过程中删除一个表。

26 浏览
0 Comments

在过程中删除一个表。

这个问题已经有答案了

可能的重复:

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: 遇到符号“END”,但需要下列符号之一:( 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。

您知道我做错了什么吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

在过程中,您无法使用 DROP 命令删除表。您需要使用 EXECUTE IMMEDIATE 在 PL/SQL 中运行 DDL 命令。

0
0 Comments

你需要按照以下步骤进行更改:

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;

0