BuildSql 分析

文件的目录结构如下:

 

执行流程:点击bat文件开始执行脚本,往数据库中插入记录

① 20150404__TEST_01.bat 

② 20150404__TEST_01entrance.sql  

③ produsr_dml_fshitd88_20150404.sql

 

分析:
0. 首先有如下测试表结构:
create table product(
id number primary key,
prod_code varchar2(20),--产品编码
prod_name varchar2(20),--产品名
price number(10,2)--价格
);

 

1. 20150404_TEST_01.bat 文件中的内容如下:
echo begin ①
sqlplus -l system/niit@ORCL @G:\workspace\buildSqlParse\20150404_TEST_01\20150404_TEST_01entrance.sql > G:\workspace\buildSqlParse\20150404_TEST_01\20150404_TEST_01result.txt; ②
echo end ③
pause; ④

说明:① echo是DOS命令,可以在DOS窗口输入help查看,在这里用于在DOS窗口输出提示信息“begin”

          ② a.  -l : sqlplus命令的可选项,可以使用:sqlplus -help 命令在DOS窗口查看可选项l的作用: 只尝试登录一次, 而不是在出错时再次提示输入用户名及密码。

       b.  sqlplus username/password@ORCL as sysdba : 以sysdba的身份登录到数据库ORCL(在oracle服务器上可能会创建多个库,在这里登录到库ORCL) ,默认的为normal 身份。    

       c.   @G:\workspace\buildSqlParse\20150404_TEST_01\20150404__TEST_01entrance.sql  其中 @ 表示执行指定脚本中SQL*Plus语句   

       d.  > G:\workspace\buildSqlParse\20150404_TEST_01\20150404__TEST_01result.txt   其中 >  表示把 命令执行 所得到的东西输出到指定文件中

          ③ 在这里用于在DOS窗口输出提示信息end

          ④ 停止批处理文件的处理并显示信息。

2. 20150404_TEST_01entrance.sql 文件中的内容如下:
--当SQL 命令或 PL/SQL 块发生错误时,先执行rollback再退出SQL*Plus,并且返回一个错误码
WHENEVER SQLERROR EXIT SQL.SQLCODE rollback 
--当发生系统异常时退出SQL*Plus
WHENEVER OSERROR EXIT
--控制 SQL*Plus 不进行扫描命令中的替换变量并用它们的值进行替换。
SET DEFINE OFF
--这个命令与 @(“at”符号)命令类似。所不同的是在执行嵌套的脚本时,它会在与调用它的脚本相同的路径或url 中查找要执行的脚本。
@@G:\workspace\buildSqlParse\20150404_TEST_01\produsr_dml_fshitd88_20150404.sql;
--quit与exit是同一词,这里可以将exit删除
quit;
exit;
 
3. produsr_dml_fshitd88_20150404.sql文件中的内容如下:
set pagesize 0     ①
set heading off    ②
set feedback on    ③
set linesize 2000  ④
spool D:\SQL_EXECUTE_LOG\produsr_dml_fshitd88_20150404.log  ⑤

select * from product;
insert into product(id, prod_code, prod_name, price) values(seq_product.nextval, 'PROD1001', '方便面', '4.5');
insert into product(id, prod_code, prod_name, price) values(seq_product.nextval, 'PROD1001', '辣条', '3.5');
select * from product;
Commit;
spool Off 

 

说明:①设置每页能够显示的行数。可把 PAGESIZE 设为0以禁止显示所有的标题、分页符、页顶部的空行和其它的格式内容。

          ② 不显示列标题

          ③ 返回多少行受影响

          ④ 控制SQL*Plus在一行中最多能够显示的字符数

          ⑤ 执行sql语句的输出日志

 

4.双击20150404__TEST_01.bat执行批处理,会在当前目录下生成结果文件20150404_TEST_01result.txt,里面内容如下:


 

 

二. 编写代码实现自动执行SQL文件

问题:如何实现根据produsr_dml_fshitd88_20150404.sql来生成20150404__TEST_01.bat ,20150404__TEST_01entrance.sql 文件?

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值