2016-09-25 42 views
0

我創建了一個工具來將所有數據和模式從MsSqlServer遷移到Oracle。無法在Oracle中使用企業庫創建表

使用的.Net庫是EntlibContrib.Data.OdpNet

雖然執行CREATE TABLE語句:

OracleDatabase db = new OracleDatabase(connectionString); 
string createDDL = "CREATE TABLE APPInvoiceItems (ABC RAW(16));"; 
db.ExecuteNonQuery(createDDL); 

我有一個例外:

ORA-00931: missing identifier 
ORA-06512: at "SYS.DBMS_UTILITY", line 156 
ORA-06512: at line 1 

我已經搜索幾個主題,但沒能找到解決的辦法

回答

1

你似乎正在調用OracleDatabase.ExecuteNonQuery方法的錯誤超載。

此方法有五種重載,全部從the superclass, Database繼承。您正在調用的重載需要一個存儲過程名稱和一個用於存儲過程參數的params對象數組。出現此錯誤是因爲您的DDL語句不是存儲過程的有效名稱。

我發現,使用以下過載工作:

db.ExecuteNonQuery(CommandType.Text, createDDL); 

CommandType需要using System.Data

此外,你需要在你的DDL語句的末尾刪除分號。否則,您將收到錯誤ORA-00911: invalid character

+0

你說得對,但還不夠,我們還需要在命令結尾添加TABLESPACE。謝謝 – phuongnd