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的主要内容,如果未能解决你的问题,请参考以下文章

linux下shell脚本中sqlplus调用shell变量的问题

在shell脚本中调用sql语句

shell 中执行Oracle查询和执行存储过程

查询oracle数据库所有用户的sqlplus命令是啥

查询oracle数据库所有用户的sqlplus命令是啥

[ SHELL编程 ] 编程常用的ORACLE相关命令