Я использую Oracle 12c в качестве базы данных, C # Web Application. Я пытаюсь выполнить запрос Oracle из C # и загрузить данные в таблицу данных. Я получаю сообщение об ошибке типа ORA-00933: команда SQL не завершена должным образом. Я выполнил тот же запрос в Toad и впервые получил ту же ошибку, но если я снова запустил тот же запрос в жабе, данные возвращают результаты. Я не уверен, в чем проблема синтаксиса.
Я попробовал следующий код:
using (var cmd = new OracleCommand {Connection = cn})
{
var selectStatement = "select * from tablename OFFSET @Offset ROWS FETCH NEXT 10000 ROWS ONLY;";
cn.Open();
cmd.CommandText = selectStatement;
cmd.Parameters.Add("@Offset", OracleDbType.Int64);
for (var index = 0; index < totalRecords; index++)
{
if (index % 10000 == 0)
{
cmd.Parameters["@Offset"].Value = index;
var dt = new DataTable()
{
TableName = tblName+"_"+index};
dt.Load(cmd.ExecuteReader());
dataTables.Add(dt);
tableIndex += 1;
}
}
}
}
Я пытаюсь получить результаты постранично. Ошибка отображается в строке cmd.ExecuteReader. Как это исправить?
Обновление 1: два решения, которые работали для этой проблемы.
var selectStatement = "Select * from tableName OFFSET :Offset ROWS FETCH NEXT 10000 ROWS ONLY";
cmd1.CommandText = selectStatement;
var numParam = new OracleParameter();
numParam.ParameterName = "Offset";
numParam.OracleDbType = OracleDbType.Int32;
numParam.Direction = ParameterDirection.Input;
numParam.Value = offsetvalue;
cmd1.Parameters.Add(numParam);
Я удалил точку с запятой из запроса и также использовал параметр как: Offset, а не @Offset
Спасибо