bat批处理文件执行Oracle sql语句

下面记录一下自己制作一个同步用户的批处理文件执行oracle sql语句的过程。

  1. 新建一个空白的文本文件,修改名称为   同步程序.bat
  2. 打开该文件,在文件中输入如下内容

sqlplus /nolog   @runSql.sql>runSql.log

@echo   执行完成,请查看runSql.log日志文件以确认是否正确执行。

PAUSE

创建好之后保存。

说明:sqlplus命名会打开sqlplus/nolog表示不登陆到oracle(这里设置为nolog的话就需要在runSql.sql这个文件里面执行命令前连接到数据库) @runSql.sql表示使用sqlplus打开runSql.sql文件以执行该文件内的命令,>runSql.log表示将执行命令的日志信息输入到runSql.log文件中。runSql.sql文件需要放在  同步程序.bat 在同一目录中,runSql.log日志文件可以不用创建,执行bat的过程中会自动创建。

3、创建runSql.sql文件,在该文件中输入如下命令

set feedback 1

set timing on

set autoprint on

WHENEVER sqlERROR continue

 

conn hangwq/neusoft@local

PROMPT 已连接到本地数据库,准备执行数据同步...

var sqlCode number;

var sqlMsg varchar2(100);

 

execute emr_pkg.what(:sqlCode,:sqlMsg);

Commit;

SHOW ERROR

disconnect

 

conn system/neusoft@local

Insert into t_department values(2,'dfdf','dfdf',sysdate);

Commit;

SHOW ERROR

disconnect

exit;

创建好了之后保存,双击同步用户.bat即可执行。 

以上示例中,演示了如下功能

连接到一个用户,并执行了该用户下一个包中的存储过程(包名是emr_pkg,存储过程名是what,两个out输出参数),完成后提交并显示 执行过程中是否有错误,然后断开,再次连上另外一个用户上去,执行了一条语句并提交,并显示执行过程是否有错误。

几个命令说明

set feedback 1//显示当前sql语句查询或者修改的 行数

set timing on//现实执行sql语句使用的时间

set autoprint on//设置自动显示PLSQL块和EXECUTE中的绑定变量,以上为sqlCode sqlMsg 两个变量

WHENEVER sqlERROR continue//当语句顺序执行的过程中 ,肯能会出现sql语句错误 ,在出现此类错误的情况下如何处理 ,这里设置为continue,即为该错误忽略,继续往下执行 ,也可以 选择rollbackcommit、或者 exit来回滚、提交 或者 退出

PROMPT text//将制定的信息输出来,如果text为空则输出一个空行。

SHOW ERROR //如果 执行过程中出现了错误 ,则将错误信息输出。

以上几个命令均为sqlplus命令,需要查看sqlplus的所有命令,可以打开sqlplus,在sqlplus中输入 help indexsqlplus会将所有 命令列出来,如果需要查看某个命令的具体语法,如 connect,可以在sqlplus窗口中输入help connect。如下图所示 :

 

原文地址:https://www.cnblogs.com/hangwq/p/2314892.html