shell调用sqlplus查询oracle
Posted 薛文博
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell调用sqlplus查询oracle相关的知识,希望对你有一定的参考价值。
[[email protected] shell_test]$ cat echo_time #!/bin/sh 一.最简单的调用sqlplus sqlplus -S "sys/unimas as sysdba" << ! select to_char(sysdate,‘yyyy-mm-dd‘) today from dual; exit; ! [[email protected] shell_test]$ ./echo_time
运行结果:
TODAY ---------- 2011-03-21
-S 是silent mode,不输出类似“SQL>”,连接数据库,关闭数据库之类的信息。
EOF
eof可以是任何字符串 比如"laldf"那么当你输入单独一行laldf时"shell认为输入结束,但是必须表示块开始必须使用<<;
开始和结束要匹配这个符号“<<”后面的内容
举例子:
[[email protected] shell_test]$ sqlplus -s "sys/unimas as sysdba" << abc > select to_char(sysdate,‘yyyy-mm-dd‘) today from dual; > exit; > abc
运行结果
TODAY ---------- 2011-03-21
二.sqlplus的结果传递给shell的方法一
[[email protected] shell_test]$ cat test2.sh #!/bin/bash VALUE=`sqlplus -S "test/unimas" << ! set heading off set feedback off set pagesize 0 set verify off set echo off select to_char(sysdate,‘yyyy-mm-dd‘) today from dual; exit !` echo $VALUE if [ -n "$VALUE" ]; then echo "The rows is $VALUE" exit 0 else echo "There is no row" fi
三.sqlplus的结果传递给shell的方法二
[[email protected] shell_test]$ cat test1.sh #!/bin/bash sqlplus -S "test/unimas" << ! set heading off set feedback off set pagesize 0 set verify off set echo off col coun new_value v_coun select count(*) coun from lesson; exit v_coun ! VALUE="$?" echo "show row:$VALUE"
col coun new_value v_coun v_coun为number类型。因为exit 只能返回数值类型。
四.把shell参数传递给sqlplu
#!/bin/bash t_id="$1" sqlplus -S "test/unimas" << ! set heading off set feedback off set pagesize 0 set verify off set echo off select teachername from teacher where id=$t_id; exit !
五.sqlplus的结果存储在文件中
#!/bin/sh sqlplus -S "test/unimas"<<EOF set heading off set feedback off set pagesize 0 set verify off set echo off spool spool_file SELECT * from teacher; spool off exit; EOF
以上是关于shell调用sqlplus查询oracle的主要内容,如果未能解决你的问题,请参考以下文章