ORA-14452: 试图创建, 变更或删除正在使用的临时表中的索引

在编写一个test存储过程中出现一个错误报告:ORA-14452: 试图创建, 变更或删除正在使用的临时表中的索引,代码如下

create or replace PROCEDURE TMP_TRANSCRIPT AS str_sql varchar2(500);v_flag number:=0; --标识
begin--判断临时表是否存在SELECT COUNT(*) into v_flag FROM User_Tables WHERE table_name = 'TEMP_TABLE';if v_flag=0  then-- 创建临时表str_sql := 'create global temporary table temp_table (   name varchar2(20),yuwen number,shuxue number,yingyu number) on commit preserve rows';execute immediate str_sql; -- 使用临时表str_sql := 'insert into temp_table select name,sum(case when kecheng='||'''语文'''||' then fenshu else 0 end) as "语文",sum(case when kecheng='||'''数学'''||' then fenshu else 0 end) as "数学",sum(case when kecheng='||'''英语'''||' then fenshu else 0 end) as "英语"from TRANSCRIPT group by name';execute immediate str_sql;--提交事务--commit;else dbms_output.put_line('ok');-- 删除临时表str_sql := 'drop table temp_table';execute immediate str_sql;--提交事务--commit;END IF;END;

第二遍运行的时候提示在drop table时出错

解决方法:

1.  truncate table temp_table  

2.  如果上面这种方法没用可以尝试  

     a.先从 dba_objects / user_objects中查询到该表的object_id:

        select object_id from dba_objects where object_name=upper('temp_table');

     b.根据查到的object_id知道使用该表的session:
        select * from v$lock where id1=&object_id;
     c.在从v$session视图中查到该session的SID和SERIAL#:
        select * from v$session where sid=3;
     d.杀掉这些进程:
        alter system kill session ‘SID,SERIAL#’;

但在使用第二种方法时出现了一个新问题:SQL 错误: ORA-00027: 无法终止当前会话

 

直接重启sqldeveloper就能解决

问题分析:起初分析是因为在存储过程insert结束后未执行commit导致事务未提交进而无法终止当前会话,所以在第二遍执行的时候无法进行drop操作

但是在insert后面添加commit之后发现依旧会出现ORA-14452: 试图创建, 变更或删除正在使用的临时表中的索引

这是什么原因呢?经过一番查找发现在drop后面添加commit就不会再出错误提示了

个人猜测会不会是因为drop有隐式提交,第一次执行完后虽然drop成功但是还未提交成功导致

至于为什么truncate又可以呢,这就涉及到了truncate和drop的区别

truncate table(截断表) 是清空一个表,是一个DDL语言,效率高,它与delete有如下区别。
delete是DML语言;
delete时会触发与表相关的触发器,而truncate不会;

在Oracle中如果删除了表中的某一条数据,还可以通过回滚操作(rollback)进行回滚,假如想清空一张表的数据,但是又不想使其能进行回滚操作,就可以立刻释放资源,这时就需要使用截断表了。它的主要功能就是彻底删除数据,使其不能进行回滚。这里我打个比方大家就立刻能明了它的作用。大家众所周知,当我们在自己的PC(person computer)上删除某一个文件,它并没有彻底删除而是进入了回收站,你要在回收站中再将其删除才算彻底清除。截断表就相当于直接将数据从pc上删除,而不会放入回收站。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息收集小练习

信息收集小练习 本文章无任何恶意攻击行为,演示内容都合规无攻击性 演示如何绕过cdn获取真实ip 使用多地ping该网站 发现有很多ip地址,证明有cdn 此处使用搜索引擎搜索,得到ip 演示nmap工具的常用参数 此处以testfire.net为例 使用多地p…

Vue3的计算属性(computed)和监听器(watch)案例语法

一:前言 Vue3 是 Vue2 的一个升级版,随着 2023年12月31日起 Vue2 停止维护。这意味着 Vue3 将会为未来国内一段时间里,前端的开发主流。因此熟练的掌握好 Vue3 是前端开发程序员所不可避免的一门技术栈。而 Vue3 是 Vue2 的一个升级版&#x…

【阿里云】图像识别 智能分类识别 增加垃圾桶开关盖功能点和OLED显示功能点(二)

一、增加垃圾桶开关盖功能 环境准备 二、PWM 频率的公式 三、pthread_detach分离线程,使其在退出时能够自动释放资源 四、具体代码实现 图像识别数据及调试信息wget-log打印日志文件 五、增加OLED显示功能 六、功能点实现语音交互视频 一、增加垃圾桶开关盖功能…

90后的杀马特

《90后的杀马特》 作家/罗光记 破晓的光影洒落,九零年代的沙尘中, 杀马特横空出世,繁华的梦境中。 红发如火,霓虹闪烁,他们舞动在街头巷尾, 披星戴月,挥洒青春,那是属…

Mysql中横表与纵表详细解析及应用举例,看完就会用!

横、纵表 定义 横表定义:一个对象的所有属性在一行,列的定义是对象的各个字段 举例:学生成绩表 姓名 Java C语言 ​ 张三 100 88 纵表定义:一个对象的所有属性被分配到多行,列的定义是对象的字段和字段的值 举例…

Flutter之Graphic图表的简单示例

简介 Graphic是一个数据可视化语法和Flutter图表库。 官方github示例 我的gitee示例 网上可用资源很少,只有作者的几篇文章,并且没有特别详细的文档,使用的话还是需要一定的时间去调研,在此简单记录。 示例 以折线图为例&…

分布式定时任务系列6:XXL-job触发日志过大引发的CPU告警

传送门 分布式定时任务系列1:XXL-job安装 分布式定时任务系列2:XXL-job使用 分布式定时任务系列3:任务执行引擎设计 分布式定时任务系列4:任务执行引擎设计续 分布式定时任务系列5:XXL-job中blockingQueue的应用 …

我在electron中集成了自己的ai大模型

同学们可以私信我加入学习群! 正文开始 前言一、大模型选择二、获取key三、调用api四、调用ai模型api时,解决跨域总结 前言 最近单位把gpt、文心一言、通义千问、星火等等等等你能想到的ai大模型都给禁掉了,简直丧心病狂。 不知道有多少感同…

Kafka配置SASL认证密码登录

​​​​​​1、修改config/server.properties,添加如下内容 listenersSASL_PLAINTEXT://内网ip:9092 advertised.listenersSASL_PLAINTEXT://外网ip:9092 security.inter.broker.protocolSASL_PLAINTEXT sasl.mechanism.inter.broker.protocolPLAIN sasl.enabled.…

青云科技容器平台与星辰天合存储产品完成兼容性互认证

近日, 北京青云科技股份有限公司(以下简称:青云科技)的 KubeSphere 企业版容器平台成功完成了与 XSKY星辰天合的企业级分布式统一数据平台 V6(简称:XEDP)以及天合翔宇分布式存储系统 V6&#xf…

Golang并发模型:Goroutine 与 Channel 初探

文章目录 goroutinegoexit() channel缓冲closerangeselect goroutine goroutine 是 Go 语言中的一种轻量级线程(lightweight thread),由 Go 运行时环境管理。与传统的线程相比,goroutine 的创建和销毁的开销很小,可以…

ITSS信息技术标准——探索信息技术服务运行维护资质查询及其意义

开篇:随着信息技术的高速发展,企业对信息化设施的依赖程度日益加深,如何确保这些设施的正常运行,提高信息技术服务的质量,成为企业关注的焦点。于是,信息技术服务标准(ITSS)应运而生…

Android : 启动模式_简单应用

在 AndroidManifest.xml 文件中更改 android:launchMode" " standard、singleTask、singleTop、singleInstance、singleInstancePerTask standard 启动模式: 默认模式 android:launchMode"standard" a—>b ab; 跳转几个界面就要 点击 返回几次 才…

1457. 二叉树中的伪回文路径 --力扣 --JAVA

题目 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 解题思路 首先确…

部署系列六基于nndeploy的深度学习 图像降噪unet部署

文章目录 1.直接在源代码demo中修改2. 如何修改呢?3. 修改 graph4. 总结 https://github.com/DeployAI/nndeploy https://nndeploy-zh.readthedocs.io/zh/latest/introduction/index.html 通过以上2个官方链接对nndeploy基本的使用方法应该有所了解了。 下面就是利用…

uniapp链接WebSocket 常用的api

UniApp是一个基于Vue语法的跨平台应用开发框架,它支持使用WebSocket来实现实时双向通信。WebSocket是一种在单个TCP连接上进行全双工通信的协议,它可以在客户端和服务器之间建立持久性的连接,并允许双向通信。在UniApp中,你可以使…

自动语音识别 支持86种语言 Dragon Professional 16 Crack

从个体从业者到全球组织,文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档,减少管理开销,以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准,为各个业…

ArcGis如何用点连线?

这里指的是根据已有坐标点手动连线,类似于mapgis中的“用点连线”,线的每个拐点是可以自动捕捉到坐标点的,比直接画精确。 我也相信这么强大的软件一定可以实现类似于比我的软件上坐标时自动生成的线,但是目前我还没接触到那里&a…

基于IDEA+SpringBoot+微服务开发的P2P平台项目

基于springboot的社区养老医疗综合服务平台 项目介绍💁🏻 项目名称:基于P2P的金融项目 一个基于P2P(点对点)模式的金融服务平台,致力于提供透明、高效、安全的金融服务。我们的目标是连接借款人与投资者&am…

Clion在Windows下build时出现undefined reference,即使cmake已经正确链接第三方库(如protobuf)?

你是否正在使用clion自带的vcpkg来安装了protobuf? 或者你是否自己使用visual studio自己编译了libprotobuf.lib? 你是否已经正确在CmakeLists.txt中添加了以下命令: find_package(Protobuf CONFIG REQUIRED) include_directories(${Protobu…