假设我有一个sql脚本,如下所示:--split statement 1

ALTER TABLE abs

ADD (make VARCHAR2(2 byte),

model varCHAR2(12 BYTE),

built_on DATE,

serial varchar2(123 BYTE));

/

--split statement 2

declare

begin

null;

end;

/

--split statement 3

insert into test (v,a,c)

values ('1','jjoe;','232');

--split statement 4

create or replace function BLAH_BLAH(i_in varchar2)

as

l_one varchar2(12);

l_two varchar2(12);

l_three varchar2(12);

begin

l_one := 1;

l_two := 3;

insert into test (v,a,b)

values ('1','jjoee;','232');

exception when no_data_found then

l_three := 3;

end;

/

基本上,脚本可以有DML、DCL、DDL和匿名块。我希望能够拆分每个语句并单独执行它们,但当然是按照它们出现的顺序。在

我想使用正则表达式,我相信逻辑应该是这样的:

1)如果字符串以create | alter | drop | declare开头,那么从字符串的开始到分号,然后是一个新行,然后是一个正斜杠(这里的关键是,如果出现匿名块,我们必须忽略DML,直到到达末尾)。在

2)如果字符串以insert | delete | update | merge开头(同样,如果我们已经在一个适用于需求1的块中,则忽略此字符串),则从该字符串的开始到分号,然后是一个没有正斜杠的新行。在

到目前为止,我用Python编写了以下内容:

^{pr2}$

但是每次我试图处理其他需求时,正则表达式就开始不起作用了(实际上输出有点奇怪),并且变得复杂到让我不知所措。在

我希望用Python或Java来实现这一点(如果这是一个oracle数据库,我想实际上最好是Java)

如果regex不能胜任这项任务,则不必是正则表达式。我的最终目标是分离每个语句并单独运行它,这样我就可以捕捉到出现的任何错误并优雅地处理它们。在

python执行oracle的sql语句_在oracledb中执行SQL脚本一次执行一条语句相关推荐

  1. flink sql 部署_在FlinkSQL中使用SQL client时,如何使用 query配置?

    Flink的SQL客户机可以在启动时读取YAML配置文件,该文件可以包括空闲状态保留规范.例如,您可以通过 sql语言- client.sh嵌入式-e sql client-配置.yaml 配置文件包 ...

  2. java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法

    在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...

  3. vba mysql 自动化错误_在Excel中运行VBA脚本时出现自动化错误

    在Excel 2007中运行VBA代码时出现自动化错误.我尝试连接到远程SQL Server数据库并将数据从Excel加载到SQL Server.在Excel中运行VBA脚本时出现自动化错误 我得到的 ...

  4. ef 执行mysql语句_在EF中执行SQL语句

    一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库.这 ...

  5. python连oracle数据库参数变量_带绑定字符串变量的Python cx_Oracle SQL

    我在使用Python为Oracle数据库创建SQL查询时遇到了一个问题. 我想绑定字符串变量,但它不起作用,你能告诉我我做错了什么吗? 这是我的代码:import cx_Oracle dokList ...

  6. java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  7. 预编译sql查询语句_频繁查询重新编译– SQL查询性能杀手–检测

    预编译sql查询语句 previous part of this article, we presented query recompilation basics. We explained when ...

  8. mysql 构造 linq语句_[转]查看LINQ生成SQL语句的几种方法

    记录LINQ生成的SQL语句是常用的调试方式,而且能根据需要来优化LINQ生成的SQL语句,更能了深入的了解LINQ. DataContext的Log属性来将LINQ to SQL生成的SQL语句格式 ...

  9. mysql中以下正确的sql是_总结MySQL中SQL语法的使用

    --where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...

最新文章

  1. Python3.5源码分析-内建模块builtins初始化
  2. JQ-CSS-实现导航菜单效果
  3. 基于tcp协议的socket
  4. 封装设置属性,一家人都要整整齐齐系列(1) JAVA泛型的实现原理
  5. 基于MATLAB的costas载波同步+gardner时间同步,QPSK调制
  6. CNN结构:场景分割与Relation Network
  7. java中bean的定义有哪些_详解Java的Spring框架中bean的定义以及生命周期
  8. 迅雷在P2P网络中的另类上传速度
  9. 支付宝小程序升级,一统阿里大生态!
  10. 启动mysql5.7异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
  11. python实现一个土豆聊天 potato chat 机器人
  12. 39个seo大师级经典案例
  13. PostgreSQL客户端认证配置
  14. win10解决已禁用输入法和隐藏中文简体美式键盘
  15. android studio USB连接华为手机不显示调试信息问题
  16. 百度移动:静悄悄的战争
  17. ToC产品和ToB产品的区别
  18. 企业群呼系统呼叫中心系统
  19. 【BLE MESH】PB-ADV入网详解
  20. 卷积与反卷积(转置卷积)关系的公式推导 及其各自的形式

热门文章

  1. Github-PAT(Personal Access Token)
  2. mvc html 辅助方法,MVC HTML辅助类常用方法记录
  3. html新标准,HTML 5新标准将会在2022年正式发布
  4. java jwks_OIDC中JWK,JWKS的介绍与使用
  5. 全网最全的Postman接口自动化测试
  6. 当公司辞掉85后测试员选择95后测试员后...
  7. 女孩子偷偷学好软件测试,想要年薪30w也没有很难!
  8. 黑群晖 断电 检测有bad sector_金属你不会以为回收就能直接再用吧,不是的,这些再生金属材料检测知识,很少人知道...
  9. firefox无法打开php,php – CORS无法在Firefox中运行
  10. 两个3*3*n旋转矩阵在第三维相乘