如何从Oracle SQL脚本中分离出各个sql语句,以便从java代码执行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何从Oracle SQL脚本中分离出各个sql语句,以便从java代码执行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1591字,纯文字阅读大概需要3分钟。
内容图文
![如何从Oracle SQL脚本中分离出各个sql语句,以便从java代码执行](/upload/InfoBanner/zyjiaocheng/897/fe91df8b1c51414da4339b0b9c2ac7a3.jpg)
我有Oracle DB 11g企业版,我想从我的java代码执行sql脚本.
我正在从.sql文件中读取此sql脚本,该脚本包含诸如create table,create type,alter table,drop type,drop procedure,insert into以及带有begin和end的pl / sql块以及所有此类构造的语句.
我的问题是,如何从java代码中分离出用于执行的单个sql语句?在MS SQL中,我可以简单地用GO关键字分隔这些sql语句,而在Oracle db中则没有这样的分隔符.通常在Oracle数据库脚本中用作分隔符的是什么?
作为一个例子,我在我的sql脚本中跟随创建触发器块以及其他sql语句.这里我有分号,我不能将其视为SQL语句终止章程(PL / SQL块本身可以包含多个以分号分隔的语句).这意味着我无法使用;类似于GO(在MS SQL中).
CREATE OR REPLACE TRIGGER SQLVersionHistory_SeqNum_TRG
BEFORE INSERT
ON SQLVersionHistory
FOR EACH ROW
BEGIN
:NEW.SequenceNumber := SQLVersionHistory_SeqNum.NEXTVAL;
END;
解决方法:
是什么创建了你的sql脚本文件? sql脚本文件创建是否可修改?
如果您可以修改sql脚本文件创建,最简单的方法是在语句之??间将自己的分隔符附加到脚本中. (评论应该是一个好主意)
如果没有,如果你只是在一个不可修改源的纯文本文件中收到一堆sql或pl / sql语句,那么你应该编写自己的解析算法.
您必须记住,每个sql语句都以分号(;)结尾,但由于PL / SQL块可以包含多个sql语句,因此它们必须在新行中以转发斜杠(/)结束.
令人困惑的部分是,一些SQL语句实际上是存储的PL / SQL块,如CREATE PROCEDURE或CREATE TRIGGER(文档手册“Oracle®DatabasePL / SQL语言参考”中的完整列表:http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/sqlstatements.htm#LNPLS99979)
(例如.
> ALTER,SELECT,DROP,GRANT等.语句以分号结束;
>以分号结束CREATE TABLESPACE,CREATE USER,CREATE TABLE等语句;
>创建程序,创建包,创建触发器等语句以斜杠结尾/
> DECLARE,BEGIN(匿名pl / sql块)语句以斜杠结尾/
)
问候
内容总结
以上是互联网集市为您收集整理的如何从Oracle SQL脚本中分离出各个sql语句,以便从java代码执行全部内容,希望文章能够帮你解决如何从Oracle SQL脚本中分离出各个sql语句,以便从java代码执行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。