Shell 与 SQLPLUS 的 交互 ---- 参数传递 返回值
2012-03-16 16:30
447 查看
unix上要执行oracle的sql,常见的是用shell脚本来调用sqlplus执行sql。
用这种方式,自然shell和sqlplus就有可能进行交互---shell传递参数进sqlplus,sqlplus将结果返回给shell。
从shell传参数进sqlplus是很简单的,可以在sql语句中用${shell变量名}的方式直接引用shell的变量.
eg,
transaction_sequence=$1
sqlplus -S stag_maint/stag_maint_ps@oraods << EOF
delete ODSDEFAULT_ODS_CONTROL WHERE TRANSACTION_SEQUENCE = ${transaction_sequence};
exit;
EOF
但如果我一个sql的执行结果需要返回给shell,那该怎么处理呢?shell中可没法直接来引用sqlplus里的变量。
经过研究,我发现以下两种方式可以达到这个目的。
方法1-----------
VALUE=`sqlplus -S stag_maint/stag_maint_ps@oraods << EOF
set heading off
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from dual;
exit;
END`
if [ -z "$VALUE" ]; then
echo "No rows returned from database"
exit 0
else
echo "Max Sequence Number: $VALUE"
fi
方法2-----------
sqlplus -S stag_maint/stag_maint_ps@oraods << EOF
set heading off feedback off pagesize 0 verify off echo off
col coun new_value v_coun
select 255 coun from dual;
exit v_coun
EOF
VALUE="$?"
echo "The number of rows is $VALUE."
不过方法2有个局限性,exit后面跟的数值只能在0-255之间。超过后会自动以255取余。
用这种方式,自然shell和sqlplus就有可能进行交互---shell传递参数进sqlplus,sqlplus将结果返回给shell。
从shell传参数进sqlplus是很简单的,可以在sql语句中用${shell变量名}的方式直接引用shell的变量.
eg,
transaction_sequence=$1
sqlplus -S stag_maint/stag_maint_ps@oraods << EOF
delete ODSDEFAULT_ODS_CONTROL WHERE TRANSACTION_SEQUENCE = ${transaction_sequence};
exit;
EOF
但如果我一个sql的执行结果需要返回给shell,那该怎么处理呢?shell中可没法直接来引用sqlplus里的变量。
经过研究,我发现以下两种方式可以达到这个目的。
方法1-----------
VALUE=`sqlplus -S stag_maint/stag_maint_ps@oraods << EOF
set heading off
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from dual;
exit;
END`
if [ -z "$VALUE" ]; then
echo "No rows returned from database"
exit 0
else
echo "Max Sequence Number: $VALUE"
fi
方法2-----------
sqlplus -S stag_maint/stag_maint_ps@oraods << EOF
set heading off feedback off pagesize 0 verify off echo off
col coun new_value v_coun
select 255 coun from dual;
exit v_coun
EOF
VALUE="$?"
echo "The number of rows is $VALUE."
不过方法2有个局限性,exit后面跟的数值只能在0-255之间。超过后会自动以255取余。
相关文章推荐
- shell如何向python传递参数,shell如何接受python的返回值
- 探讨c++函数中的参数传递与返回值(六) 总结
- C++函数参数和返回值三种传递方式
- Shell传递参数~03
- shell和c语言的参数变量传递!(小寿原创)
- shell 与 sqlplus 交互
- JNI编程中如何传递参数和返回值。
- JavaScript中函数当作参数传递或当作返回值
- 将参数传递到awk内,用shell脚本提取符合条件的行
- python传递参数给shell
- shell 函数,去掉传递进来参数开头的0
- js 与 android 的交互(方法互调用) 和android向 js传递值, js向android传参数 事件拦截看上一篇
- Shell 学习笔记之传递参数
- C函数与汇编函数之间参数及返回值传递方法
- shell中,依次向同一脚本中传递不同的参数
- shell 传递选项和参数之 getopt 的用法
- shell命令传递参数完整范例(cronhub调度系统daemon安装脚本)
- Shell 传递参数(转)
- JNI学习二:字符串参数传递与返回值
- 本篇将介绍在JNI编程中如何传递参数和返回值