mysql中00933错误_c# - 通过C#执行Oracle命令-错误:ORA-00933:SQL命令未正确结束 - 堆栈内存溢出...

我正在使用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的参数,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值