能够通过bat/dos 取得plsql返回值么?
比如使用SQLPLUS 调用xxx.sql文件。
xxx.sql文件里有方法的返回值。我怎么能够在bat/dos里取得这个值,
类似bat/dos里的errorlevel一样,对其进行判断。
期待高手指教!

解决方案 »

  1.   

    --执行存储过程/函数,把返回值保存到bindvariable中,然后再执行
    column return_code new_value rcode
    select :bindvariable return_code from dual;
    exit rcode
    这样就会以所得到的返回值作为返回码退出sqlplus,在bat中就可以通过%ERRORLEVEL%得到那个返回码。
      

  2.   

    楼上的高手,我有点没看明白您说的。
    column   return_code   new_value   rcode 这句话是什么意思?select   :bindvariable   return_code   from   dual; 查询语句的时候还需要输入值么?查询的两个值之间为什么不用逗号阿?
    请赐教阿!谢谢。
    您要回答的问题正是我要问的问题。
      

  3.   

    column return_code new_value rcode 
    的意思是将名为return_code列的值保存到rcode变量中,注意这个变量是类似用define定义的变量,不是var定义的bindvariable。
    select :bindvariable return_code from dual;
    的意思是把名为bindvariable的绑定参数以列名return_code输出,由于之前通过column语句定义了return_code列的值保存到rcode变量中,所以就等于把名字叫bindvariable的绑定参数的值保存rcode变量
      

  4.   

    举个例子,现在有个存储过程p,它有两个参数v1,v2,v1是输入参数,v2是输出参数(类型是整型),现在想把执行p的结果v2返回给bat,那么准备一个sql脚本,内容如下
    var i number
    exec p('INPUT',:i)
    column return_code new_value rcode
    select :i return_code from dual;
    exit rcodebat的内容如下
    sqlplus username/password@servicename @SQL脚本名
    echo %ERRORLEVEL%
      

  5.   

    【test.bat】
    sqlplus user/password@testdb @test.sql
    echo %errorlevel%【test.sql】
    WHENEVER SQLERROR EXIT 9
    var i number
    exec :i := test_function
    exit :i【test_function】
    CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN NUMBER IS
    wk_return number;
    BEGIN
    wk_return := 0 ;
    return wk_return;
    END;
    /