下面记录一下自己制作一个同步用户的批处理文件执行oracle sql语句的过程。
- 新建一个空白的文本文件,修改名称为 同步程序.bat
- 打开该文件,在文件中输入如下内容
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,即为该错误忽略,继续往下执行 ,也可以 选择rollback、commit、或者 exit来回滚、提交 或者 退出 等 。
PROMPT text//将制定的信息输出来,如果text为空则输出一个空行。
SHOW ERROR //如果 执行过程中出现了错误 ,则将错误信息输出。
以上几个命令均为sqlplus命令,需要查看sqlplus的所有命令,可以打开sqlplus,在sqlplus中输入 help index,sqlplus会将所有 命令列出来,如果需要查看某个命令的具体语法,如 connect,可以在sqlplus窗口中输入help connect。如下图所示 :