2017-11-11 83 views
1

什么,我试图做无法动态地删除表中的PL/SQL

我想创建它接受表名作为参数的过程。而在过程中我动态下探使用表Dynamic SQL

什么问题

execute droptab('TEST');我得到以下错误调用程序后:

ERROR at line 1:  
ORA-00950: invalid DROP option  
ORA-06512: at "SYSTEM.DROPTAB", line 4  
ORA-06512: at line 1 

程序

create or replace procedure dropTab (tableName in varchar2) is 

    begin 
      EXECUTE IMMEDIATE 'DROP TABLE' || tableName;  
    end; 
    /
+0

尝试在表名称之前添加数据库名称,例如database.table。并尝试在普通的SQL窗口中执行它,也许你没有授予的权利。 – Momo

+3

''DROP TABLE'|| tableName;'TABLE'和'tablename'之间没有空格,如果tablename是'sometable',最后的命令是'DROP TABLEsometable',这显然是错误的。 – krokodilko

回答

4

C焊割

'DROP TABLE' 

'DROP TABLE ' 

即添加额外空间

+0

大声笑,但确实解决了它:)但为什么我们必须增加这个空间?谢谢。 – Ahtisham

+1

所以SQL语句变成'DROP TABLE

'和'不删除表
'' –

+0

EXECUTE IMMEDIATE '创建表thisYearCustomerNames(ID' || customer.id%类型|| '名' \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t || customer.name%类型|| '点' || \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t customer.points%类型|| ')';'\t \t \t \t \t \t \t \t \t **错误: \t \t \t \t 4/5 PL/SQL:语句忽略 \t \t \t \t 4/80 PLS-00208:识别符 'TYPE'是不是合法的光标属性** \t \t \t \t \t \t \t \t为什么我得到那个错误? – Ahtisham