sqlplus中调用shell_shell 调用 sqlplus

本文详细介绍了如何在Shell脚本中调用Sqlplus执行SQL语句,并展示了不同的结果处理方式,包括将Sqlplus输出保存到文件、将执行结果传递给Shell变量、接收Sqlplus退出状态码以及如何安全地处理数据库密码。
摘要由CSDN通过智能技术生成

一、最简单的shell里调用sqlplus.

$ vi test1.sh

#!/bin/bash

sqlplus -S /nolog > result.log <

set heading off feedback off pagesize 0 verify off echo off

conn u_test/iamwangnc

select * from tab;

exit

EOF

$ chmod +x test1.sh

$ ./test1.sh

二、把sqlplus执行结果传递给shell方法一

注意sqlplus段使用老板键`了, 赋变量的等号两侧不能有空格.

$ vi test2.sh

#!/bin/bash

VALUE=`sqlplus -S /nolog <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn u_test/iamwangnc

select count(*) from tab;

exit

EOF`

if [ "$VALUE" -gt 0 ]; then

echo "The number of rows is $VALUE."

exit 0

else

echo "There is no row in the table."

fi

$ chmod +x test2.sh

$ ./test2.sh

三、把sqlplus执行结果传递给shell方法二

注意sqlplus段使用 col .. new_value .. 定义了变量并带参数exit, 然后自动赋给了shell的$?

$ vi test3.sh

#!/bin/bash

sqlplus -S /nolog > result.log <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn u_test/iamwangnc

col coun new_value v_coun

select count(*) coun from tab;

exit v_coun

EOF

VALUE="$?"

echo "The number of rows is $VALUE."

$ chmod +x test3.sh

$ ./test3.sh

四、把shell程序参数传递给sqlplus

$1表示第一个参数, sqlplus里可以直接使用, 赋变量的等号两侧不能有空格不能有空格.

$ vi test4.sh

#!/bin/bash

NAME="$1"

sqlplus -S u_test/iamwangnc <

select * from tab where tname = upper('$NAME');

exit

EOF

$ chmod +x test4.sh

$ ./test4.sh ttt

五、为了安全要求每次执行shell都手工输入密码

$ vi test5.sh

#!/bin/bash

echo -n "Enter password for u_test:"

read PASSWD

sqlplus -S /nolog <

conn u_test/$PASSWD

select * from tab;

exit

EOF

$ chmod +x test5.sh

$ ./test5.sh

六、为了安全从文件读取密码

对密码文件设置权限, 只有用户自己才能读写.

$ echo 'iamwangnc' > u_test.txt

$ chmod g-rwx,o-rwx u_test.txt

$ vi test6.sh

#!/bin/bash

PASSWD=`cat u_test.txt`

sqlplus -S /nolog <

conn u_test/$PASSWD

select * from tab;

exit

EOF

$ chmod +x test6.sh

$ ./test6.sh

--End--

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值