Shell_Shell调用SQLPlus简介(案例)

简介: 2014-06-20  Created By BaoXinjian 一、摘要 如果在Oracle EBS中开发Unix Shell,必定会涉及到在Shell中调用PLSQL,在Shell调用PLSQL一般是通过SQLPlus这个工具 关于SQLPlus需明白SQLPlus的登录方式和常用命令,具体的在另文介绍SQLPlus的用法 1. SQLPlus的登录方式 sqlplus [ [] [] [] ]           为: [-C ] [-L] [-M ""] [-R ] [-S] -C      将受影响的命令的兼容性设置为 指定的版本。

2014-06-20  Created By BaoXinjian

一、摘要


如果在Oracle EBS中开发Unix Shell,必定会涉及到在Shell中调用PLSQL,在Shell调用PLSQL一般是通过SQLPlus这个工具

关于SQLPlus需明白SQLPlus的登录方式和常用命令,具体的在另文介绍SQLPlus的用法

1. SQLPlus的登录方式

sqlplus [ [<option>] [<logon>] [<start>] ]
           <option> 为: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]

  • -C <version>     将受影响的命令的兼容性设置为<version> 指定的版本。该版本具有"x.y[.z]" 格式。例如, -C 10.2.0
  • -L                      只尝试登录一次, 而不是在出错时再次提示。
  • -M "<options>"  设置输出的自动 HTML 标记。选项 的格式为:HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
  • -R <level>         设置受限模式, 以禁用与文件系统交互的,SQL*Plus 命令。级别可以是 1, 2 或 3。最高限制级别为 -R 3, 该级别禁用与文件系统交互的所有用户命令。
  • -S                     设置无提示模式, 该模式隐藏, 命令的 SQL*Plus 标帜, 提示和回显的显示。

2. 登录SQLPlus的基本命令

  • SQL> show all --查看所有68个系统变量值
  • SQL> show user --显示当前连接用户
  • SQL> show error   --显示错误
  • SQL> set heading off --禁止输出列标题,默认值为ON
  • SQL> set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON"
  • SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
  • SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "
  • SQL> set linesize 1000 --设置屏幕显示行宽,默认100
  • SQL> set autocommit ON --设置是否自动提交,默认为OFF
  • SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
  • SQL> set arraysize 1 --默认为15
  • SQL> set long 1000 --默认为80

3. SQLPlus语法

语法结构与PLSQL基本一致,略过

 

二、案例


1. 最简单Shell调用SQLPlus的方法

Step1. 代码

1 #!/bin/bash
2 sqlplus -S /nolog > result.log <<EOF
3 set heading off feedback off pagesize 0 verify off echo off
4 conn apps/apps
5 insert into bxj_sqlplus_test values (sysdate, 'bxjsqlplus1.sh', null);
6 exit
7 EOF

Step2. 执行

>. ./bxjshellsql1.sh

Step3. 结果

 

2.1 把SQLPlus中的值传递给Shell方法一

Step1. 代码

 1 #!/bin/bash
 2 VALUE=`sqlplus -S /nolog <<EOF
 3 set heading off feedback off pagesize 0 verify off echo off numwidth 4
 4 conn apps/apps
 5 select count(*) from bxj_sqlplus_test;
 6 exit
 7 EOF`
 8 if [ "$VALUE" -gt 0 ]; then
 9   echo "The number of rows is $VALUE."
10   exit 0
11 else
12   echo "There is no row in the table."
13 fi

Step2. 执行

>. ./bxjshellsql2.sh

Step3. 结果

2.2 把SQL Plus中的值传递给Shell方法二

Step1. 代码

 1 #!/bin/bash
 2 sqlplus -S /nolog > result.log <<EOF
 3 set heading off feedback off pagesize 0 verify off echo off numwidth 4
 4 conn apps/apps
 5 col coun new_value v_coun
 6 select count(*) coun from bxj_sqlplus_test;
 7 exit v_coun
 8 EOF
 9 VALUE="$?"
10 echo "The number of rows is $VALUE."

Step2. 执行

>. ./bxjshellsql3.sh

Step3. 结果

 

3. 把Shell中的值传递给SQLPlus

Step1.  代码

1 #!/bin/bash
2 COMMENTS="$1"
3 sqlplus -S apps/apps <<EOF
4 insert into bxj_sqlplus_test values (sysdate, 'bxjsqlplus4.sh', '$COMMENTS');
5 exit
6 EOF

Step2. 执行

>. ./bxjshellsql4.sh

Step3. 结果

 

Thanks and Regards

参考: 网络资料http://www.blogjava.net/xzclog/archive/2010/04/01/317151.html

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
6月前
|
机器学习/深度学习 Java Shell
shell脚本简介+编写
shell脚本简介+编写
58 0
|
6月前
|
Shell Linux
Shell编程(01)-入门简介
Shell编程(01)-入门简介
44 0
|
11月前
|
Unix Shell Linux
Shell脚本攻略01-简介/终端打印
Shell脚本攻略01-简介/终端打印
78 0
|
11月前
|
Ubuntu Shell Linux
|
Shell Linux 编译器
Linux:shell编程1(内含:1.shell简介+2.shell实操+3.shell的变量介绍+4.shell变量的定义)
Linux:shell编程1(内含:1.shell简介+2.shell实操+3.shell的变量介绍+4.shell变量的定义)
67 0
Linux:shell编程1(内含:1.shell简介+2.shell实操+3.shell的变量介绍+4.shell变量的定义)
|
Shell
Bash shell中四种算术运算方式的区别与联系简介
在bash shell中,整数的运算也会偶尔遇到。为了彻底弄清其中的奥秘,我们通过实例验证的方式来探索一下常见的四种运算中的区别与联系。
1338 0
|
Shell 关系型数据库 MySQL