2017-11-11 36 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