ORA-22992:无法使用从远程表定位的lob定位器

今天在调试Oracle存储过程中,发现了一个常见的SQL错误:无法使用从远程表定位的lob定位器,相信很多人也经常会遇到这个问题,这个问题归根结底实际上是Oracle做跨库连接时远程表存在像blob、clob等大数据类型的字段,数据库无法直接在DML操作中运用。现在我将问题和解决思路和网友们分享一下,如果有更好的解决方案,还请指教,谢谢!

1、异常

 

其中,远程表so_mstr中存在大数据字段

这时候无法直接通过select语句跨库取到值,因此就会报出这个错误,现在由于我不需要这个字段的值,因此,我的处理方式是跳过这个字段,将其他需要的字段放在子查询中,

以回避这个字段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
insert into som_mstr --SOM_BF_SO_TERMS,SOM_AF_SO_TERMS
  (SOM_SO_NBR, SOM_SO_REV, SOM_BF_SO_ADDR, SOM_BF_SO_PO, SOM_BF_SO_CR_TERMS, SOM_BF_SO_SLSPSN, SOM_BF_SO_CURR, SOM_BF_SO_EX_RATE, SOM_BF_SO_VAT,
  SOM_BF_SO_REV, SOM_BF_SO_RMKS, SOM_BF_SO_CHAR1, SOM_BF_SO_CHAR2, SOM_BF_SO_CHAR3, SOM_BF_SO_CHAR4, SOM_BF_SO_CHAR5, SOM_BF_SO_CHAR6,
  SOM_BF_SO_QTY1, SOM_BF_SO_QTY2, SOM_PROG_CODE,SOM_AF_SO_ADDR, SOM_AF_SO_PO, SOM_AF_SO_CR_TERMS, SOM_AF_SO_SLSPSN, SOM_AF_SO_CURR, SOM_AF_SO_EX_RATE, SOM_AF_SO_VAT,
  SOM_AF_SO_RMKS, SOM_AF_SO_CHAR1, SOM_AF_SO_CHAR2, SOM_AF_SO_CHAR3, SOM_AF_SO_CHAR4, SOM_AF_SO_CHAR5, SOM_AF_SO_CHAR6, SOM_AF_SO_QTY1,
  SOM_AF_SO_QTY2, SOM_RMKS, SOM_WF_STATUS, SOM_SITE,SOM_CRT_BY, SOM_CRT_DATE,SOM_MOD_TIMES,SOM_MOD_BY,SOM_MOD_DATE)
   
  SELECT SO_NBR, NVL(SO_REV,1), SO_ADDR, SO_PO, SO_CR_TERMS, SO_SLSPSN, SO_CURR, SO_EX_RATE, SO_VAT,
  SO_REV, SO_RMKS, SO_CHAR1, SO_CHAR2, SO_CHAR3, SO_CHAR4, SO_CHAR5, SO_CHAR6,
  SO_QTY1, SO_QTY2, 'SLCHMTA1',SO_ADDR, SO_PO, SOM_AF_SO_CR_TERMS, SO_SLSPSN, SO_CURR, SO_EX_RATE, SO_VAT,
  SO_RMKS, SO_CHAR1, SO_CHAR2, SO_CHAR3, SO_CHAR4, SO_CHAR5, SO_CHAR6, SO_QTY1,
  SO_QTY2,SO_RMKS,SO_WF_STATUS,SO_SITE,var_user, sysdate, 0, var_user, sysdate
  FROM (select SO_NBR, NVL(SO_REV,1), SO_ADDR, SO_PO, SO_CR_TERMS, SO_SLSPSN, SO_CURR, SO_EX_RATE, SO_VAT,
  SO_REV, SO_RMKS, SO_CHAR1, SO_CHAR2, SO_CHAR3, SO_CHAR4, SO_CHAR5, SO_CHAR6,
  SO_QTY1, SO_QTY2 ,SO_WF_STATUS,SO_SITE
  from SO_MSTR)
  LEFT JOIN SOM_MSTR ON 'F'||SOM_SO_NBR = SO_NBR
  WHERE SO_NBR = var_nbr AND (SO_REV = var_version or SO_REV is null);

  

显然,这种方式只能治标但不能治本,若要治本,还应学习掌握blob、clob大数据类型远程赋值的技巧,方能在以后的工作中得心应手。

 

posted @   *ち黑サカ  阅读(8591)  评论(0编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
点击右上角即可分享
微信分享提示