关于执行存过中使用dblink 中merge into会报错 ORA-00600:

在调用存过merge into 进行更新数据时出现
ORA-00600: 内部错误代码, 参数: [qerelFetch_10], [], [], [], [], [], [], [], [], [], [], []
在这里插入图片描述
存过代码大概如下

CREATE OR REPLACE PROCEDURE sp_test_merge IS
BEGIN
	MERGE INTO t_stock s
	USING (SELECT o.goods_id, SUM(o.goods_number) goods_number
			 FROM caiguangcan.t_order@To_ctcore o
			WHERE EXISTS
			(SELECT 1 FROM t_user t WHERE t.user_code = o.user_code)
			GROUP BY o.goods_id) ud
	ON (s.goods_id = ud.goods_id)
	WHEN MATCHED THEN
		UPDATE SET s.goods_stock = s.goods_stock - ud.goods_number;

	ROLLBACK;
END sp_test_merge;

后面经过发现当merge into 中using 部分查不到数据时,就会ORA-00600,并且要使用dblink。
比较神奇的是,dblink访问数据库的版本时 11.2.0.1.0
在这里插入图片描述
而创建dblink库的版本是 11.2.0.4.0
在这里插入图片描述
然后经过测试发现是版本问题,当创建dblink版本月dblink访问数据库版本一致不会出现这个问题。由于dblink访问数据库是生产环境无法升级到11.2.0.4.0 ,这个办法不能解决。
第二个解决方法 是执行mege into 前, 先判断using 中是否有数据,如果没有数据不执行mege into 。
对于这个问题 暂时没有找到真正的原因。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值