Unix Shell脚本 用到while与sql的一个简单例子 最好带解释的 就剩20了全都掏出来了 各位大侠帮帮忙吧
发布网友
发布时间:2022-05-05 20:20
我来回答
共2个回答
懂视网
时间:2022-05-06 00:41
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成O
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一。本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例。
一、由shell脚本调用sql,rman脚本
二、嵌入sql语句及rman到shell脚本
,
热心网友
时间:2022-05-05 21:49
把问题描述清楚一点、不然不知道你想干什么!
什么叫做while与sql的简单例子啊,是单独的while的例子,还是单独的sql的列子,还是sql要在while当中嵌套啊!
一:单独的while:
!/bin/ksh
cnt=0;
#单cnt<5的时候、循环打印aaa
while [[ $cnt -lt 5 ]]
do
echo aaa
cnt=$(($cnt + 1 )) #变量加1
done
二:单独sql,就是在脚本里访问数据库了:
sqlplus ${_username}\/${_password}@${_server} <<HERE>${_log_file}#登录sqlplus,sqlplus执行结果保存在${_log_file}这个文件里面供后期检查
set SERVEROUTPUT ON SIZE 1000000;#辅助设置、可以不写
set linesize 32767; #辅助设置、可以不写
var v_resultcode number; #辅助设置、可以不写
var v_resultinfo VARCHAR2(500) ; #辅助设置、可以不写
exec ${_Proc_Name}('$_Cycle_ID','$_Eparchy_ID',1,31,:v_resultcode,:v_resultinfo);#执行存储过程(该存储过程有6个参数、前面4个是输入、后面两个是输出、用于后面检查存储过程是否会出错用的),如果执行sql文件,可以将exec这一行修改为@your.sql
print v_resultcode v_resultinfo #辅助设置、可以不写
exit; #退出函数
HERE #注意这个HERE和前面的HERE配对、HERE里面的内容就像你登录sqlplus一样的执行
三、如果while中嵌套sql,只要把上面单独的sql放在一个函数里面(假设为proc_db),然后while里:面去调用函数就行了:
就会变成像下面的这样:
!/bin/ksh
cnt=0;
#单cnt<5的时候、循环打印aaa
while [[ $cnt -lt 5 ]]
do
proc_db #调用函数、函数作用为启动sqlplus执行相关命令
cnt=$(($cnt + 1 )) #变量加1
done
#希望可以帮助到你,上面的脚本有些变量我没有替换,比如登录数据的用户名、密码等信息,你可以自己替换一下!!