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 函数施行修改和游标传递相关推荐

  1. Oracle使用游标更新数据 Oracle游标之select for update和where current of 语句

    Oracle使用游标更新数据 2016年11月20日 13:15:49 hzwy23 阅读数:5313 友情推广 ###使用游标修改数据 ####定义一个游标,游标名称为 mycursor ##### ...

  2. oracle游标添加数据,Oracle使用游标更新数据

    1. 使用游标修改数据 定义一个游标,游标名称为 mycursor 更新scott用户中emp表中empno为7369的销售额 -- Created on 2015/11/30 by ZHANW de ...

  3. oracle 误删除表数据,Oracle误删除表数据后的数据恢复详解

    Oracle误删除表数据后的恢复详解 测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_rete ...

  4. oracle 批量导入 数据,Oracle批量插入数据的三种方式【推荐】

    第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); inse ...

  5. 修改数据 (通过页面修改数据库数据)

    1.搭建自己的页面,根据自己实际需求自行搭建改动,在此不要求统一( *页面上内容已通过单表查询与数据库数据连接 *不会单表查询的可看我前面发表的文章这里就不重复 *注意布局时要加入模态框(如图二)) ...

  6. Oracle学习:数据的插入、修改和删除

    DML :数据操作语言,对应增删改查 一.数据插入 insert 语句:insert into tablename[col1,„] values(val1,„); (1)插入全部列:插入一行数据,对应 ...

  7. oracle+imp部分数据,ORACLE数据库IMP逻辑导入出现ORA-00910的处理案例

    ORACLE IMP ORA-00910 出错处理案例 环境 源库AIX+9.2.0.4  新库solaris+9.2.0.8 导入出错提示是以下部分: IMP-00017: following st ...

  8. oracle批量构造数据,oracle批量构造数据方法 - rd_clp的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    1.一种是只要数据条数,至于里面内容可以是序列方式,另外可能几个表中相互 id的关联,那建议用存诸过程写. 表a(id,name)有学员的信息 表b(id,testid,subject,score)有 ...

  9. oracle join过滤数据,oracle join on 数据过滤问题

    代码如下: select a.f_username from ( SELECT /*+parallel(gu,4)*/distinct gu.f_username FROM t_base_succpr ...

最新文章

  1. 超详细的 Redis Cluster 官方集群搭建指南,适用于 redis 5.x, 6.x
  2. 【Linux】【通信】1.ping不通
  3. oracle性能问题排查,性能测试Oracle消耗排查记录
  4. word 公式编号 右侧对齐_写论文要求公式居中编号右对齐的方法
  5. linux搭建rabbitmq环境,RabbitMQlinux-centos环境配置
  6. TIOBE 9 月编程语言:C++ 突起、R 越进前十
  7. YOLOv4改进版重磅问世!Yolov4扩展版!Yolov4原班人马重磅推出Scaled-YOLOv4: Scaling Cross Stage Partial Network
  8. flex3+blazeds+spring+hibernate整合小结
  9. BackgroundWorker学习笔记
  10. python里边的单词都表示什么_Python:只保留字符串中的单词,每个单词都在newlin上...
  11. 普通web项目转maven项目
  12. [转]html导出到excel数据格式不正确解决方法
  13. 虚拟网站禁用php,PHP虚拟主机建议禁用函数列表
  14. 关于excel数据透视表的数据填充
  15. 嵌入式软件工程师面试遇到的经典题目
  16. python判断用户名密码是否正确_Python账号密码登陆判断(三次机会)
  17. 高德地图——输入经纬度查找
  18. HTML Canvas 刮刮卡抽奖效果的实现
  19. Qt编写安防视频监控系统53-串口配置
  20. vivo信号无服务器,vivo X50上手实测,连央视都夸的国货之光究竟体验如何?

热门文章

  1. pytorch单维筛选 相乘
  2. 大数据搜索:Python编码实战
  3. Linux使用小于1024的端口号,Linux中如何让普通用户使用小于1024的端口
  4. 内网java发送邮件_基于JavaMail的Java邮件发送:简单邮件发送
  5. jde多目标_华科开源多目标跟踪(MOT)实时新SOTA:FairMOT
  6. JAVA编写一个telephone_JAVA练习.doc
  7. linux线程怎样实时性,高效轻型线程怎么提高Linux实时性能?
  8. crc生成多项式怎么算_利用system Verilog生成任意CRC多项式
  9. c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器
  10. python用户登录_【python】实例-用户登录系统