参数说明
sqlplus -S /nolog
# 以安静模式登录(不显示sqlplus的版本、帮助、提示、命令信息),通常用来获取查询结果并赋值给变量。
Unix/Linux下,shell脚本调用sqlplus的几种方式介绍:
实战:
#!/bin/bash
sqlplus -S scott/scott <<EOF > sqlplus.log
set heading off;
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from dual;
quit
EOF
一、最简单的shell调用sqlplus
#!/bin/bash
sqlplus -S /nolog > sqlplus.log <<EOF
conn scott/scott
select sysdate from dual;
quit
EOF
二、sqlplus返回执行结果给shell
#!/bin/bash
biz_date=`sqlplus -S scott/scott <<EOF
set heading off;
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from dual;
exit
EOF`
echo $biz_date
# (注意:等号两侧不能有空格.)
方法二:
注意sqlplus段使用 col .. new_value .. 定义了变量并带参数exit, 然后自动赋给了shell的$?
#!/bin/bash
sqlplus -S scott/scott <<EOF
set heading off;
set pagesize 0;
set feedback off;
set verify off;
set echo off;
col biz_date new_value v_biz_date
select sysdate biz_date from dual;
exit v_biz_date
EOF
biz_date="$?"
# (注意:结尾出的EOF后面不能有任何字符)
三、shell程序传递参数给sqlplus
sqlplus
里可以直接使用, 赋变量的等号两侧不能有空格不能有空格.
接收到的变量不能加引号。“select sysdate from tb;"
不能写成"select sysdate from 'tb';"
#!/bin/bash
tb=dual
sqlplus -S scott/scott <<EOF
set heading off;
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from $tb;
exit
EOF
四、为了安全要求每次执行shell都手工输入密码
#!/bin/bash
echo -n "Enter db password for scott: "
read pwd
sqlplus -S scott/$pwd <<EOF
set heading off;
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from dual;
exit
EOF
评论前必须登录!
注册