oracle 之 cursor:创建存储过程批量执行DDL语句
说明:使用此过程可任意执行批量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_CODE
EXIT WHEN CUR_BATCH_DDL%NOTFOUND; --当游标中无值时退出循环
EXECUTE IMMEDIATE DDL_CODE; --动态执行DDL
COMMIT; --多使用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_%''');
oracle 之 cursor:创建存储过程批量执行DDL语句的更多相关文章
- 向Oracle中传入数组,批量执行SQL语句
1.首先用PL/SQL创建package create or replace package excuteBatchOperate as type sqlStr_Array ) index by bi ...
- Oracle创建存储过程、执行存储过程基本语法
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- dbvisualizer客户端执行创建存储过程或自定义函数语句的方法
DBVisualizer这个数据库客户端工具,如果要执行存储过程或函数的话,需要在创建存储过程或函数的语句的最前面和末尾分别加上[--/]和[/]符号. --/ CREATE FUNCTION B22 ...
- SQL*PLUS中批量执行SQL语句
SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ...
- PHP mysqli 增强 批量执行sql 语句的实现代码
本篇文章介绍了,在PHP中 mysqli 增强 批量执行sql 语句的实现代码.需要的朋友参考下. mysqli 增强-批量执行sql 语句 <?php //mysqli 增强-批量执行sql ...
- JDBC连接MYSQL,批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句
conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("trunca ...
- 批量执行sql语句
基本使用 $sqls="sql语句1;sql语句2;sql语句n"; 或 $sqls="insert into xx;"; $sqls.="inse ...
- powershell利用winform批量执行tsql语句
#加载.net的winform模块 [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $app= ...
- 使用C# 操作存储过程,执行sql语句通用类
如何使用C# 操作存储过程,执行sql语句? 闲话不多说,直接上代码: /// <summary> /// Sql通用类 /// </summary> ...
随机推荐
- RPC 框架
RPC 谁能用通俗的语言解释一下什么是 RPC 框架? - 远程过程调用协议RPC(Remote Procedure Call Protocol) RPC就是要像调用本地的函数一样去调远程函数. 推荐 ...
- QQ表情的添加
<!DOCTYPE html><html><head> <meta charset="UTF-8" /> <title> ...
- abp (.net 5)设置默认请求语言为简体中文
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-5.0 默认有3个prov ...
- 『学了就忘』Linux服务管理 — 75、Linux系统中的服务
目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...
- macOS Monterey 12.1 (21C52) 正式版 ISO、IPSW、PKG 下载
本站下载的 macOS Monterey 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装. 2021 年 12 月 14 日, ...
- DevOps团队交付了什么?
一.简介 "你在团队里是做什么的?" "DevOps." "DevOps是什么呢?" "DevOps是一种文化.一种实践,目标是加 ...
- A New Discrete Particle Swarm Optimization Algorithm
题目:一种新的离散粒子群优化算法 中文摘要 粒子群优化算法在许多优化问题上表现得非常好.粒子群优化算法的缺点之一是假设算法中的变量为连续变量.本文提出一个新的粒子群优化算法,能够优化离散变量.这个新算 ...
- 使用 Amazon S3 触发器创建缩略图
使用 Amazon S3 触发器创建缩略图 环境 centos (注意,必须是Linux环境) node12.x 安装教程 curl -sL https://rpm.nodesource.com/se ...
- java 编程基础 Class对象 反射:代理模式和静态代理
生活中的代理 类(对象)代理模式 代理模式是面向对象编程中比较常见的设计模式. 1. 用户只关心接口功能,而不在乎谁提供了功能.上图中接口是 Subject 2. 接口真正实现者是上图的 RealSu ...
- Windows 11实现录屏直播,搭建Nginx的rtmp服务
先!下载几个工具呗 官方下载FFmpeg:http://www.ffmpeg.org 官方下载nginx-rtmp-module:https://github.com/arut/nginx-rtmp- ...