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

假设我有一个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不能胜任这项任务,则不必是正则表达式。我的最终目标是分离每个语句并单独运行它,这样我就可以捕捉到出现的任何错误并优雅地处理它们。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值