我正在使用Oracle 12c作为数据库,C#Web应用程序。 我正在尝试从C#执行Oracle查询并将数据加载到数据表中。 我收到类似ORA-00933的错误:SQL命令未正确结束。 我在Toad中运行了相同的查询,并且第一次遇到了相同的错误,但是如果我在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的参数,谢谢