请教:如何在shell脚本中调用存储过程,该存储过程既有输入参数(IN),也有输出参数(OUT)我想要调用该存储过程,然后将输出参数赋值给shell中的变量,求指教!希望能有完整点儿的脚本例子  谢谢!

解决方案 »

  1.   

    #下面的代码是对于从oracle的sqlplus返回变量值给shell的例子
    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'之间。
      

  2.   

    函数只返回一个值 $output
    但是存储过程可以输出多个参数,那应该怎么获取哪?
      

  3.   

    参考http://blog.csdn.net/java3344520/article/details/7205306