Выполнение встроенного оператора с помощью хранимой процедуры с использованием Oracle.ManagedAccess - PullRequest
0 голосов
/ 10 декабря 2018
StringBuilder sql_statement  = new StringBuilder();

sql_statement.Append("sampleStoreproc(null, 1); ");
sql_statement.Append("SELECT 'Y' FROM myTable ");
sql_statement.Append("WHERE column1 = null AND column2 = 1 ");

DataAccessObject.ExecuteReader(
    connectionString, 
    CommandType.Text, 
    sql_statement.ToString());

выдает ошибку:

ORA-0090 Неверный оператор SQL

Я пытался добавить ; точку с запятой в последнем утверждении, но это не работает.

Я скопировал весь текст и запустил в SQL Developer его отлично исполняемый файл.

1 Ответ

0 голосов
/ 10 декабря 2018

В вашем первом утверждении вы вызываете хранимую процедуру.Измените его на:

sql_statement.Append("execute sampleStoreproc(null, 1); ");

Также рекомендуется добавить точку с запятой в конце вашей последней строки.

Редактировать: Попробуйте заключить оба выражения вbegin...end; блок:

sql_statement.Append("begin");
sql_statement.Append("  execute sampleStoreproc(null, 1);");
sql_statement.Append("  SELECT 'Y' FROM myTable");
sql_statement.Append("  WHERE column1 = null AND column2 = 1;");
sql_statement.Append("end;");
...