C# Oracle游标读取数据时提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

5 篇文章 0 订阅

导读

  • C# Oracle 游标获取数据集 https://www.oracle.com/technetwork/database/williams-refcursors-089902-zhs.html
  • 正文:语句执行时遇到“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。” (Attempted to read or write protected memory. This is often an indication that other memory has been corrupted Locked)
    -解决:先检查代码中所有参数的方向、类型

还以为Oracle游标获取数据集有多难,结果原来Oracle官网就有对应的例子。毕竟不熟悉Oracle,给过来的PL/SQL很复杂,一下子把我吓到了。

我用的是Oracle自己的DataAccess.DLL,并没有用C#自己封装的OLEDB。 由于写的仓促, 首次测试的时候没有发现复制参数修改的时候,param a copy 为param b 的时候,本来打算 param b的方向修改为output, 结果定义的名字忘记改了,也就是param a的方向被修改为output,导致方向出错,调用的时候出错。 因为in 的参数不允许输出, Oracle报错尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

我没有认真检查,还查了很多相关的文章, 最后检查还是自己代码出错了。

如果确认代码没有出错, 最好检查一下给过来的SQL的参数的方向是否给对了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值