通过Database Link集成远程数据库时,从远程数据库上查询Blob字段时总返回ORA- 22992 错误 。有人采用物化视图解决这个问题,但物化视图同步机制会带来麻烦,如果同步时间设置过短,则占用大量的系统资源,给服务器带来极大的压力;如果设置时间过长,前台用户不可接受。

参考网上资料,据说来自 AskTom,使用全局临时表,实现了自认为优雅的解决。

代码如下:
create or replace package pkg_photo as
  type sys_refcursor is ref cursor;
  procedure proc_photo(p_sfzh in string,
  p_photo OUT pkg_rkzp.sys_refcursor);
  end pkg_photo;
 
  create or replace package body pkg_photo as
   procedure proc_photo(p_sfzh in string, p_photo OUT pkg_rkzp.sys_refcursor)
      AS
      v_num number;
      v_sql varchar2(2000);
      v_sfzh string(18);
      BEGIN   
          select count(*) into v_num from user_tables where table_name=upper('tmp_jn_czrk_zp');
          dbms_output.PUT_LINE(v_num);
          if v_num<1 then
              v_sql := 'create global temporary table tmp_ryzp(sfzh char(18),photo blob) on commit preserve rows';
              EXECUTE IMMEDIATE v_sql;
          end if;
         
          v_sql := 'insert into tmp_photo select sfzh,photo from v_remote_table@mydblink where sfzh=:1';
          EXECUTE IMMEDIATE v_sql using p_sfzh;
         
          OPEN p_photo FOR v_sql;
          EXCEPTION
            WHEN NO_DATA_FOUND            
              THEN NULL;
            WHEN OTHERS
              THEN RAISE;
      END proc_photo;
end pkg_photo;

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-06/37920.htm

转载于:https://www.cnblogs.com/Csharpblogs/archive/2011/07/08/2101457.html

Oracle 临时表解决ORA-22992问题相关推荐

  1. oracle错误01653,oracle 10g 错误 ORA 01653 的解决过程

    oracle 10g 错误 ORA 01653 的解决过程 早上用户反应在操作用友NC时报错 ORA-01653 ,详细信息:ORA-01653: 表 NCV35.GL_DETAIL 无法通过 102 ...

  2. oracle 试图访问已经在使用的事物处理临时表,解决ORA-14450:试图访问已经在使用的事务处理临时表-Oracle...

    解决ORA-14450:试图访问已经在使用的事务处理临时表 解决方法 –1.查找sessionID select SID,SERIAL# from V$session  where SID in (s ...

  3. oracle临时表经常被锁_数据库学习——Oracle 数据库了解与使用

    一. 数据库相关概念 1 什么是数据库 所谓的数据库其实就是数据的集合.用户可以对集合中的数据进行新增.查询.更新.删除等操作.数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与 ...

  4. oracle临时表性能,oracle临时表-优化查询速度

    目前所有使用oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量.[@more@] 当然在oracle中创建分区是一种不错的选择,但是当你发 ...

  5. oracle 创建临时表报权限不足,ORACLE 临时表空间满了的原因解决方案

    临时表空间作用 Oracle临时表空间主要用来做查询和存放一些缓冲区数据.临时表空间消耗的主要原因是需要对查询的中间结果进行排序. 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql ...

  6. oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?

    作者介绍 洪烨,openGauss Contributor,多年银行业系统架构设计及DBA实战经验,<DB2数据库内部解析与性能调优>作者. openGauss的前世今生 上一篇看到很多朋 ...

  7. oracle10 64位odbc,图文教你64位win10添加oracle odbc驱动时提示无法加载oracle如何解决...

    现在电脑已成为我们工作生活的一部分,相信大家在操作电脑时一定会遇到这样那样的问题,64位win10添加oracle odbc驱动时提示无法加载oracle如何解决这个问题就是我们经常会遇到的,这样的问 ...

  8. oracle 临时表空间语句,oracle的临时表空间

    经常看到有人说看到temporary tablespace空间不释放等等的问题,整理一篇metalink上的相关文章,入门级的,还算浅显吧.基本上就是翻译了. sort之后临时段不回收 描述 当你监控 ...

  9. Oracle 临时表、数据闪回、查询被锁表、系统常用表、及常用操作

    目录 Oracle 系统常用表/视图 Oracle 临时表概述与创建 flashback  闪回表中被删除的数据 flashback  闪回整个被 drop 的表 查询 Oracle 中被锁定的表 查 ...

最新文章

  1. 跨域cookie传递
  2. 网络流三·二分图多重匹配 HihoCoder - 1393
  3. ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)
  4. c语言 将结构体放在flash,如何将 结构体 的 数据 定义在flash里面,并如何读出来,求各位达人帮助……...
  5. Python回调函数的实现
  6. golang http 返回html文件_用Golang写爬虫(三) - 使用goquery
  7. 我最近读了什么书?(随时更新)
  8. 二叉树的之字形层序遍历
  9. java知识总结-24
  10. iOS开发之Xcode项目文件自动展开问题的解决办法
  11. 实现MySQL导入sql脚本
  12. asp.net core mvc 项目搭建 二、hplus UI【干货教程】
  13. python 文件转base64
  14. ES6面试题(参考文档)
  15. 时间序列——季节系数法
  16. easyui使用datagrid时deleteRow删除后行号问题
  17. 关于Ubuntu多显卡服务器,掉显卡的问题
  18. ST-LINK Utility + ST LINK+ STM32G474 erase chip fails
  19. 这个周末,炸锅了!QQ疑似出现大面积盗号!各种不雅照乱发!网友:被社死!...
  20. thinkpad e450 win7黑苹果macos 10.10.5(网/显/声卡驱动)安装成功

热门文章

  1. sklearn常用模块
  2. linux6.5声卡驱动安装,详解CentOS 6.5如何安装Realtek无线网卡驱动
  3. 专业音频如何把电平转换成dbu_这是我见过最细致的音频系统增益设置指南,跟着学起来!...
  4. python telnetlib执行命令_使用python Telnet远程登录执行程序的方法
  5. initramfs下启动linux_和菜鸟一起学linux之initramfs方式启动
  6. python中清除海龟图的代码_Python海龟绘图——常用方法指令
  7. PyTorch教程(七):属性统计
  8. 马赛克,克星,真来了!
  9. 绘制方法太单一!?这三个宝藏在线学习资源推荐给你~~
  10. 用Pandas来美化一波图表