请问在Windows环境下,现有脚本文件excute_procedure.sql,执行一个带返回值的Procedure ,通过Bat文件调用Procedure文件如下:
CREATE OR REPLACE PROCEDURE CHECK_YEAR
(
i_returncode OUT NUMBER
)
IS
BEGIN
IF TO_CHAR(SYSDATE,'YYYY') = ’2007‘ THEN
i_returncode = 0;
ELSE
i_returncode = 1;
END IF;
END;
/我想根据返回值来执行不同的操作,比如“如果返回值是‘0’,在屏幕上输出‘This Year’;如果返回值是‘1’,在屏幕上输出‘Other Year’”.请问如何写脚本文件和Bat文件?
CREATE OR REPLACE PROCEDURE CHECK_YEAR
(
i_returncode OUT NUMBER
)
IS
BEGIN
IF TO_CHAR(SYSDATE,'YYYY') = ’2007‘ THEN
i_returncode = 0;
ELSE
i_returncode = 1;
END IF;
END;
/我想根据返回值来执行不同的操作,比如“如果返回值是‘0’,在屏幕上输出‘This Year’;如果返回值是‘1’,在屏幕上输出‘Other Year’”.请问如何写脚本文件和Bat文件?
直接写pl/sql的output呢?
客户要求用批处理来做~~~客户就是爷,没办法我现在批处理调用没问题,但就是没法取得返回值并做处理~~
是通过BAT文件来调用SQLPLUS吗?如果是的话 把你的批处理中调用SQLPLUS后的语句用一个PLSQL块来操作 定义几个变量
然后加些IF判断没有做过OS调用脚本的东西 不知道是否可以实现?把你的批处理脚本发出来吧
sqlplus user/password@Database @D:\excute_procedure.sqlRESULT_CODE=$?if $RESULT_CODE == “0” echo “This Year”
if $RESULT_CODE == “1” echo “Other Year’”
这样Procedure可以执行,但从RESULT_CODE=$?这一句开始就报错了~~
脚本文件是
VAR RTN_CD NUMBER;
SET SERVEROUTPUT ON;
EXEC CHECK_YEAR(:RTN_CD);
EXIT :RTN_CD;就是想请教一下怎么在Bat里面得到返回值并判断~
try again
要求很简单,就是在Bat里面通过sqlplus去执行Procedure运行脚本,并根据返回值不同在屏幕上显示不同的内容~~LS的兄弟, quit 和 host try again要写在哪里呢?
举个例子,现在有个存储过程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 rcode bat的内容如下
sqlplus username/password@servicename @SQL脚本名
echo %ERRORLEVEL%