【问题标题】:Cannot create Table in Oracle using Enterprise library无法使用企业库在 Oracle 中创建表
【发布时间】:2016-09-25 20:17:36
【问题描述】:

我正在创建一个工具来将所有数据和架构从 MsSqlServer 迁移到 Oracle。

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

在执行创建表时:

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

我已经搜索了几个主题,但无法找到解决方案

【问题讨论】:

    标签: c# .net oracle enterprise-library odp.net


    【解决方案1】:

    您似乎调用了 OracleDatabase.ExecuteNonQuery 方法的错误重载。

    这个方法有五个重载,都继承自the superclass, Database。您正在调用的重载需要一个存储过程名称和一个用于存储过程参数的 params 对象数组。出现错误是因为您的 DDL 语句不是存储过程的有效名称。

    我发现使用以下重载有效:

    db.ExecuteNonQuery(CommandType.Text, createDDL);
    

    CommandType 需要using System.Data。)

    此外,您需要删除 DDL 语句末尾的分号。否则会报错ORA-00911: invalid character

    【讨论】:

    • 你说得对,但还不够,我们还需要在命令末尾添加 TABLESPACE。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多