2016-09-25 2 views
0

Я создаю инструмент для переноса всех данных и схемы из MsSqlServer в Oracle.Невозможно создать таблицу в 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 

Я искал несколько тем, но не смог найти решение

ответ

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