说明:使用此过程可任意执行批量DDL语句,调用DDL查询语句时,注意转义字符,使用 ' 转义

需求:批量删除以CUR_TEST开头的表,且有日志记录。

环境准备:建几张以CUR_TEST开头测试表。

CREATE TABLE CUR_TEST_1(ID INT);
CREATE TABLE CUR_TEST_2(ID INT);
CREATE TABLE CUR_TEST_3(ID INT);

创建日志表:

CREATE TABLE PRO_BATCH_DDL_LOG(OP_TIME DATE,DDL_INFO VARCHAR2(100));

创建批量执行DDL操作存储过程:

CREATE OR REPLACE PROCEDURE PRO_BATCH_DDL(SQL_CODE VARCHAR2) AS
TYPE CUR_TYPE IS REF CURSOR; --定义动态游标类型
CUR_BATCH_DDL CUR_TYPE; --定义动态游标参数
DDL_CODE VARCHAR2(100); --定义接收值参数
BEGIN
OPEN CUR_BATCH_DDL FOR SQL_CODE; --打开游标,并赋值。
LOOP --开始循环FETCH CUR_BATCH_DDL INTO DDL_CODE; --将游标内的值,赋值给DDL_CODEEXIT WHEN CUR_BATCH_DDL%NOTFOUND; --当游标中无值时退出循环EXECUTE IMMEDIATE DDL_CODE; --动态执行DDLCOMMIT; --多使用commit是个好习惯INSERT INTO PRO_BATCH_DDL_LOG VALUES(SYSDATE,DDL_CODE);  --将DDL语句插入日志表COMMIT; --多使用commit是个好习惯
END LOOP; --结束循环
CLOSE CUR_BATCH_DDL; --关闭游标
END;

编写批量执行的SQL语句,并检查SQL查询结果是否有误:

SELECT 'DROP TABLE '||TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE'CUR_TEST_%';

调用过程(PRO_BATCH_DDL):

CALL PRO_BATCH_DDL('SELECT ''DROP TABLE ''||TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE''CUR_TEST_%''');

转载于:https://www.cnblogs.com/simple-li/p/10012539.html

oracle 之 cursor:创建存储过程批量执行DDL语句相关推荐

  1. oracle存储过程ddl,Oracle 存储过程中的DDL语句

    Oracle的存储过程,是我们使用数据库应用开发的重要工具手段.在存储过程中,我们大部分应用场景都是使用DML语句进行数据增删改操作.本篇中,我们一起探讨一下数据定义语句DDL在存储过程中使用的细节和 ...

  2. oracle 动态执行ddl语句,Oracle过程中执行动态SQL或DDL语句

    如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句, 如果你用的是 Oracle ...

  3. oracle 触发器执行ddl,在Oracle的触发器中执行DDL语句

    触发器无需commit 也不能写commit 触发器和触发它的DML是同一个事务 DML提交了,触发器的操作也提交了,要不就一起回滚了 当然,如果你一定要在触发器里写COMMIT 那就用自治事务 相当 ...

  4. PL/SQL块中不能直接执行DDL语句(错误)

    在PL/SQL块中不能直接执行DDL语句 (后篇批量删除表时却明明在PL/SQL块中使用了DROP,而且执行成功,厄...自打三十大板...谁来救我...) declare     v_string  ...

  5. java 执行ddl语句_在JDBC中,如何知道DDL语句是否成功执行?

    我正在尝试使用JDBC在Oracle 11g数据库上执行DDL语句.我现在用的是这样做boolean execute(String SQL)的的Statement类. 以下是执行查询并尝试确定查询结果 ...

  6. mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)

    下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynam ...

  7. 《电脑编程技巧与维护》2011年第24期刊登出《DB 查询分析器》批量执行DML语句并返回更详细的信息

    国家级科技期刊<电脑编程技巧与维护>编辑部寄来的2011年第24期(即12月下)样刊,在2011年第24期(即12月 下),刊登出了本人的论文------"<DB 查询分析 ...

  8. java连接mysql执行ddl_JDBC执行DDL语句

    ~~~ package JDBC; /** * @author: hcf * @qq: 46914685 * @email: 46914685@qq.com */ import java.sql.Co ...

  9. MySQL 执行DDL语句 hang住了怎么办?

    MySQL 执行DDL语句 hang住了怎么办? 不要慌,先点支烟,听我娓娓道来! 前两天,早上7点多的时候,抓起手机忽然看到了圈内的一则DDL语句 hang住的案例,阅读到文末,发现文中留有一些疑问 ...

  10. pl/sql中创建存储过程并执行

    1.创建存储过程 create or replace procedure procedureName is begin update tableName set userName = 'zhangsa ...

最新文章

  1. hibernate注解之@Onetomany、@Manytoone、@JoinColumn
  2. mysql数据库入门教程(13):存储过程
  3. matlab中的图像类型
  4. HTML5 音频视频
  5. IDEA 配置weblogic home时,weblogic version无法选择
  6. 1003 Emergency
  7. c语言 数组循环左移m位
  8. redis 槽点重新分配 集群_弄懂一致性哈希后我打通了redis分区集群的原理
  9. ORACLE新增DATABASE LINK
  10. 练手级计算机,快来打怪
  11. Unity2D 小游戏之 RocketMouse
  12. 为什么互联网公司天天都在招人?
  13. 全国人口年龄结构及抚养比(1987-2019年)
  14. 从 DOM 中移除一个元素
  15. TypeScript超详细入门教程(上)
  16. Qt入门教程【Core篇】Layout布局(布局管理器、手动布局)
  17. php 模拟鼠标点击,Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例)...
  18. Java Web项目中遇到的文件上传与下载问题
  19. python练习题15:恺撒密码 I
  20. 机器学习之LASSO,岭回归

热门文章

  1. 实战build-react(二)-------引入Ant Design(增加)
  2. DFS CCPC2017 南宁I题
  3. JZOJ5143:无心行挽
  4. js容易犯错的知识点
  5. Charles proxy tools 移动开发调试
  6. Structs2笔记①--structs的背景、structs2框架的意义、第一个helloworld
  7. input 标签左对齐
  8. [转载] 七龙珠第一部——第050话 海盗的陷阱
  9. iPhone 和 华为手机 :手机端酷狗音乐提示 “导入歌曲不支持此操作” ----曲线解决导入问题
  10. 老李分享:Android性能优化之内存泄漏3