shell中如何获取存储过程的输出参数给变量 请教:如何在shell脚本中调用存储过程,该存储过程既有输入参数(IN),也有输出参数(OUT)我想要调用该存储过程,然后将输出参数赋值给shell中的变量,求指教!希望能有完整点儿的脚本例子 谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #下面的代码是对于从oracle的sqlplus返回变量值给shell的例子output=`sqlplus -s unitele/lemontea << EOFset heading off feedback off verify offdrop function test_get_param_value_p;CREATE OR REPLACE function test_get_param_value_p(is_citycode in varchar2)return varchar2ison_value varchar2(100); beginon_value :='100000';dbms_output.put_line(on_value);dbms_output.put_line(is_citycode);return on_value;end;/select test_get_param_value_p('501') from dual;exitEOF`echo "Oracle的输出变量值:"$output+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=存储过程 myproc(in_num in number,out_num out number)sql脚本模板先编辑一个mysql.sql文件,内容如下:------------var nret number;execute :nret := 0;--初始化call myproc(in_code,:nret)--执行存储过程,in_code会被替换掉/select 'retcode[' || :nret || ']retcode' from dual--显示结果/quit;-------------SHELL脚本mysh.sh,内容如下-------------#./mysh.sh 123cd /home/myshellsed "s/in_code/$1/" mysql.sql > mysql01.sql#根据sql脚本模板生成实际脚本sqlplus usr/pwd@db result$1.txt#执行sql脚本并把结果输入result$1.txtecho ok!-------------在LINUX下执行./mysh.sh 123,生成result123.txt,myproc输出参数在'retcode['和']retcode'之间。 函数只返回一个值 $output但是存储过程可以输出多个参数,那应该怎么获取哪? 参考http://blog.csdn.net/java3344520/article/details/7205306 DEFAULT 我一个update问题 在线求一查询语句?很急 oracle的用户数到底是什么概念?我问过oracle公司的sales,也说不清楚,请指点! 如何清除掉归档日志文件? 请教:一个关于回滚的简单问题,在线等待 如何取blob字段的长度?谢谢了! 询问如何Drop一个主键? 问个oracle9i安装问题,我在第一次安装时选择了全局数据库名为myoracle。安装完成后,我又卸下oracle9i,重新安装oracle9i,但好象数据库名 oracle ora-01843 求指点 oracle 字符转截取 一个字符串分隔行转列的问题
output=`sqlplus -s unitele/lemontea << EOF
set heading off feedback off verify off
drop function test_get_param_value_p;
CREATE OR REPLACE function test_get_param_value_p
(
is_citycode in varchar2
)
return varchar2
is
on_value varchar2(100);
begin
on_value :='100000';
dbms_output.put_line(on_value);
dbms_output.put_line(is_citycode);
return on_value;
end;
/
select test_get_param_value_p('501') from dual;
exit
EOF
`
echo "Oracle的输出变量值:"$output
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
存储过程 myproc(in_num in number,out_num out number)
sql脚本模板
先编辑一个mysql.sql文件,内容如下:
------------
var nret number;
execute :nret := 0;--初始化
call myproc(in_code,:nret)--执行存储过程,in_code会被替换掉
/
select 'retcode[' || :nret || ']retcode' from dual--显示结果
/
quit;
-------------
SHELL脚本mysh.sh,内容如下
-------------
#./mysh.sh 123
cd /home/myshell
sed "s/in_code/$1/" mysql.sql > mysql01.sql
#根据sql脚本模板生成实际脚本
sqlplus usr/pwd@db result$1.txt
#执行sql脚本并把结果输入result$1.txt
echo ok!
-------------
在LINUX下执行./mysh.sh 123,生成result123.txt,myproc输出参数在'retcode['和']retcode'之间。
但是存储过程可以输出多个参数,那应该怎么获取哪?