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)