我正在创建一个工具,将所有数据和架构从MsSqlServer迁移到Oracle。
使用的.Net库是 EntlibContrib.Data.OdpNet 。
执行CREATE表时:
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
我搜索了几个主题,但无法找到解决方案
答案 0 :(得分:1)
您似乎正在调用OracleDatabase.ExecuteNonQuery
方法的错误重载。
此方法有五个重载,都是从the superclass, Database
继承的。您正在调用的重载采用存储过程名称和存储过程参数的params
对象数组。出现错误是因为您的DDL语句不是存储过程的有效名称。
我发现使用以下重载工作:
db.ExecuteNonQuery(CommandType.Text, createDDL);
(CommandType
需要using System.Data
。)
此外,您需要在DDL语句末尾删除分号。否则,您将收到错误ORA-00911: invalid character
。