使用oracle 游标修改数据,Oracle 函数施行修改和游标传递
Oracle 函数执行修改和游标传递
ORA-14551:不能在查询语句中执行dml语句,开始误以为函数里不能执行DML或DDL语句,后查到前辈通过采用自治事务解决,在此基础上演例 传递SQL语句对数据进行操作。
?
?
目的: 查询出需要清空的表,然后全部清空,要求返回清空信息。
?
一:创建类型
?
create or replace type tab_desc as table of varchar(200);
?
二:创建清空函数???
??
create or replace function func_trunc_tab(l_cursor in sys_refcursor)
return tab_desc
pipelined
-- parallel_enable(partition l_cursor by any)
is
v_schma varchar2(200); --对象名
v_tabname varchar2(200); --表名
v_row_count number := 0;
v_total_count number := 0;
PRAGMA AUTONOMOUS_TRANSACTION;
/* 自治事务实现的功能是自治事务的提交或回滚不影响当前的事务。
同时自治事务也是看不到当前会话所做的未提交的修改的。*/
begin
loop
fetch l_cursor
into v_schma, v_tabname;
exit when l_cursor%notfound;
execute immediate 'truncate table ' || v_schma || '.' || v_tabname;
execute immediate 'select count(1) from ' || v_schma || '.' ||
v_tabname
into v_row_count;
v_total_count := v_total_count + v_row_count;
pipe row('trancate table ' || v_schma || '.' || upper(v_tabname));
end loop;
pipe row('All Table Row Count is ' || v_total_count);
close l_cursor;
return;
exception
when others then
if l_cursor%isopen then
close l_cursor;
end if;
raise;
end func_trunc_tab;
?
?
调用:(清空当前用户里所有以'ZY_TMP' 开头的表,这里sql 语句就是FUNC_TRUNC_TAB函数的参数)
?
?
?
SELECT *
FROM TABLE(FUNC_TRUNC_TAB(CURSOR (SELECT USER AS OWNER, OBJECT_NAME
FROM USER_OBJECTS T
WHERE T.OBJECT_TYPE = 'TABLE'
AND T.OBJECT_NAME LIKE 'ZY_TMP%')));
COLUMN_VALUE
trancate table ZHANGYONG.ZY_TMP_001
trancate table ZHANGYONG.ZY_TMP_002
trancate table ZHANGYONG.ZY_TMP_003
All Table Row Count is 0
?
?
使用oracle 游标修改数据,Oracle 函数施行修改和游标传递相关推荐
- Oracle使用游标更新数据 Oracle游标之select for update和where current of 语句
Oracle使用游标更新数据 2016年11月20日 13:15:49 hzwy23 阅读数:5313 友情推广 ###使用游标修改数据 ####定义一个游标,游标名称为 mycursor ##### ...
- oracle游标添加数据,Oracle使用游标更新数据
1. 使用游标修改数据 定义一个游标,游标名称为 mycursor 更新scott用户中emp表中empno为7369的销售额 -- Created on 2015/11/30 by ZHANW de ...
- oracle 误删除表数据,Oracle误删除表数据后的数据恢复详解
Oracle误删除表数据后的恢复详解 测试环境: SYSTEM:IBM AIX 5L Oracle Version:10gR2 1. undo_rete ...
- oracle 批量导入 数据,Oracle批量插入数据的三种方式【推荐】
第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); inse ...
- 修改数据 (通过页面修改数据库数据)
1.搭建自己的页面,根据自己实际需求自行搭建改动,在此不要求统一( *页面上内容已通过单表查询与数据库数据连接 *不会单表查询的可看我前面发表的文章这里就不重复 *注意布局时要加入模态框(如图二)) ...
- Oracle学习:数据的插入、修改和删除
DML :数据操作语言,对应增删改查 一.数据插入 insert 语句:insert into tablename[col1,„] values(val1,„); (1)插入全部列:插入一行数据,对应 ...
- oracle+imp部分数据,ORACLE数据库IMP逻辑导入出现ORA-00910的处理案例
ORACLE IMP ORA-00910 出错处理案例 环境 源库AIX+9.2.0.4 新库solaris+9.2.0.8 导入出错提示是以下部分: IMP-00017: following st ...
- oracle批量构造数据,oracle批量构造数据方法 - rd_clp的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
1.一种是只要数据条数,至于里面内容可以是序列方式,另外可能几个表中相互 id的关联,那建议用存诸过程写. 表a(id,name)有学员的信息 表b(id,testid,subject,score)有 ...
- oracle join过滤数据,oracle join on 数据过滤问题
代码如下: select a.f_username from ( SELECT /*+parallel(gu,4)*/distinct gu.f_username FROM t_base_succpr ...
最新文章
- 超详细的 Redis Cluster 官方集群搭建指南,适用于 redis 5.x, 6.x
- 【Linux】【通信】1.ping不通
- oracle性能问题排查,性能测试Oracle消耗排查记录
- word 公式编号 右侧对齐_写论文要求公式居中编号右对齐的方法
- linux搭建rabbitmq环境,RabbitMQlinux-centos环境配置
- TIOBE 9 月编程语言:C++ 突起、R 越进前十
- YOLOv4改进版重磅问世!Yolov4扩展版!Yolov4原班人马重磅推出Scaled-YOLOv4: Scaling Cross Stage Partial Network
- flex3+blazeds+spring+hibernate整合小结
- BackgroundWorker学习笔记
- python里边的单词都表示什么_Python:只保留字符串中的单词,每个单词都在newlin上...
- 普通web项目转maven项目
- [转]html导出到excel数据格式不正确解决方法
- 虚拟网站禁用php,PHP虚拟主机建议禁用函数列表
- 关于excel数据透视表的数据填充
- 嵌入式软件工程师面试遇到的经典题目
- python判断用户名密码是否正确_Python账号密码登陆判断(三次机会)
- 高德地图——输入经纬度查找
- HTML Canvas 刮刮卡抽奖效果的实现
- Qt编写安防视频监控系统53-串口配置
- vivo信号无服务器,vivo X50上手实测,连央视都夸的国货之光究竟体验如何?
热门文章
- pytorch单维筛选 相乘
- 大数据搜索:Python编码实战
- Linux使用小于1024的端口号,Linux中如何让普通用户使用小于1024的端口
- 内网java发送邮件_基于JavaMail的Java邮件发送:简单邮件发送
- jde多目标_华科开源多目标跟踪(MOT)实时新SOTA:FairMOT
- JAVA编写一个telephone_JAVA练习.doc
- linux线程怎样实时性,高效轻型线程怎么提高Linux实时性能?
- crc生成多项式怎么算_利用system Verilog生成任意CRC多项式
- c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器
- python用户登录_【python】实例-用户登录系统