shell 与 sqlplus 交互

简介: 1、简单shell调用sqlplus编写脚本[oracle@localhost oracle_script]$ vimtest1.

1、简单shell调用sqlplus

编写脚本

[oracle@localhost oracle_script]$ vimtest1.sh

#!/bin/bash

# user env
source ~/.bash_profile


sqlplus -S /nolog > result.log<<EOF

--set heading off feedback off pagesize 0verify off echo off

conn scott/tiger

select * from emp where empno= 7369;

exit

EOF

备注:这里注意要加上source ~/.bash_profile环境变量,否则找不到SQLPLUS命令,

或者直接用export ...... oracle路径也可


修改脚本权限

[oracle@localhost oracle_script]$  chmod +x test1.sh

[oracle@localhost oracle_script]$ ll

总计 4

-rwxr-xr-x 1 oracle oinstall 154 01-1308:59 test1.sh

 

执行脚本

[oracle@localhost oracle_script]$./test1.sh

 

查看结果

[oracle@localhost oracle_script]$ catresult.log

EMPNO ENAME JOB   MGR HIREDATE   SAL  COMM   DEPTNO

---------- ---------- --------- ---------- ---------   ----------     ----------  ----------

7369 SMITH      CLERK           7902 17-DEC-80   800    20

 

2、Sqlplus返回值给Shell(一)

方式一:用Shell的小板键` 来执行sqlplus:

[oracle@localhost oracle_script]$ vi test2.sh

#!/bin/bash

# user env
source ~/.bash_profile

VALUE=`sqlplus -S /nolog <<EOF

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

conn scott/tiger

select count(*) from emp;

exit

EOF`

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

echo "The number of rows is$VALUE."

exit 0

else

echo "There is no row in thetable."

fi

 

注意:等号两边不能有空格,有空格会报错如下:

[oracle@localhost oracle_script]$ ./test2.sh

./test2.sh: line 2: VALUE: command notfound

./test2.sh: line 8: [: : integer expressionexpected

There is no row in the table.

 

修改脚本权限

[oracle@localhost oracle_script]$ chmod +x test2.sh

[oracle@localhost oracle_script]$ ll

总计 4

-rwxr-xr-x 1 oracle oinstall 154 01-1308:59 test2.sh

 

执行查看结果

[oracle@localhost oracle_script]$ ./test2.sh

The number of rows is       14.

3、Sqlplus返回值给Shell(二)

该sqlplus使用 col  列名 new_value 变量名 定义了变量并带参数exit, 将变量v_coun返回赋给了shell的$?

[oracle@localhost oracle_script]$ cattest3.sh

#!/bin/bash

# user env
source ~/.bash_profile

sqlplus -S /nolog > result.log<<EOF

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

conn scott/tiger

col coun new_value v_coun

select count(*) coun from emp;

select * from emp where empno=7369;

exit v_coun

EOF

VALUE="$?"

echo "The number of rows is$VALUE."

 

备注:NEW_VALUE通常的使用方法为:

    column column_name new_value var_name

    new_value是将所获得的列值赋予到变量名,然后该变量名可以参与后续处理

 

修改脚本权限

[oracle@localhost oracle_script]$ chmod +x test3.sh

[oracle@localhost oracle_script]$ ll

总计 16

-rw-r--r-- 1 oracle oinstall   5 01-16 15:10 result.log

-rwxr-xr-x 1 oracle oinstall 213 01-1310:00 test1.sh

-rwxr-xr-x 1 oracle oinstall 285 01-1615:08 test2.sh

-rwxr-xr-x 1 oracle oinstall 259 01-1615:10 test3.sh

 

执行查看结果

[oracle@localhost oracle_script]$ ./test3.sh

The number of rows is       14.

4、shell传参给sqlplus

$1是传给SHELL的第一个参数,将参数传入给SQLPLUS , 变量赋值表达式的等号2边不能有空格.

[oracle@localhost oracle_script]$ vi test4.sh

#!/bin/bash

# user env
source ~/.bash_profile

NAME="$1"

sqlplus -S scott/tiger <<EOF

select * from emp where ename =upper('$NAME');

exit

EOF

 

 

修改脚本权限

[oracle@localhost oracle_script]$ chmod +x test4.sh

[oracle@localhost oracle_script]$ ll

总计 4

-rwxr-xr-x 1 oracle oinstall 154 01-1308:59 test4.sh

 

执行查看结果

 [oracle@localhostoracle_script]$ ./test4.sh

no rows selected

[oracle@localhost oracle_script]$ ./test4.sh smith

EMPNO ENAME      JOB   MGR HIREDATE         SAL       COMM  DEPTNO -------- ---------- ------------------- --------- ---------- ---------- ----------

 7369  SMITH      CLERK           7902 17-DEC-80        800   20

5、安全Shell调用Sqlplus

为了保证连接数据库安全,每次调用脚本的时候要输入用户名和密码

[oracle@localhost oracle_script]$ vi test5.sh

#!/bin/bash

# user env
source ~/.bash_profile

echo -n "Enter user name:"

read UNAME

echo -n "Enter password foruser:"

read PASSWD

sqlplus -S /nolog <<EOF

conn $UNAME/$PASSWD

select * from emp;

exit

EOF

 

[oracle@localhost oracle_script]$ ./test5.sh

Enter user name:scott

Enter password for user:tiger

EMPNO ENAME      JOB              MGR HIREDATE         SAL    

---------- ---------- --------- ------------------- ---------- ----------

     7369 SMITH      CLERK           7902 17-DEC-80        800

目录
相关文章
|
7月前
|
Linux Shell 网络安全
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
225 1
|
1月前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
141 7
|
7月前
|
监控 Shell
在Shell脚本编程或命令行交互
在Shell脚本编程或命令行交互
62 3
|
7月前
|
Ubuntu Shell Linux
Shell批量SSH免交互登录认证
Shell批量SSH免交互登录认证
|
7月前
|
存储 算法 Shell
【Linux 环境变量相关】深入理解Linux下 CMake、Shell 与环境变量的交互(二)
【Linux 环境变量相关】深入理解Linux下 CMake、Shell 与环境变量的交互
242 0
|
7月前
|
存储 Shell Linux
【Linux 环境变量相关】深入理解Linux下 CMake、Shell 与环境变量的交互(一)
【Linux 环境变量相关】深入理解Linux下 CMake、Shell 与环境变量的交互
314 0
|
7月前
|
缓存 自然语言处理 Shell
xv6(19)SHELL交互程序
SHELL交互程序
96 0
|
7月前
|
NoSQL Shell 数据安全/隐私保护
搞定shell脚本expect自动化交互输入密码等就是这么简单
搞定shell脚本expect自动化交互输入密码等就是这么简单
525 0
|
Shell Linux Go
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
131 0
|
JavaScript 前端开发 Shell
Linux Shell脚本实现自动交互
Linux Shell脚本实现自动交互
297 0