プロが教えるわが家の防犯対策術!

perlからSQLPLUS->プロシージャを実行してその戻り値を取得。
戻り値が0なら次の処理へ、0以外ならエラー処理へというようなことをやりたいと思っています。

perlの実行コマンドは以下。
$sqlcmd = "sqlplus$DBUSER$PASS\@DB_ALIAS\@$SQLFILE $OUTFILE";

$sql_ret = system("$sqlcmd") >>8;

この$sql_retにプロシージャの戻り値が入るようにしたいのです。

プロシージャを実行する$SQLFILEは以下のようなSQLです。
---------------------------------------------------
set serveroutput on
WHENEVER SQLERROR EXIT 1

spool &1;

DECLARE
RetVal NUMBER;

BEGIN
RetVal := 実行ストアドファンクション;
END;
/
spool off;

EXIT SQL.SQLCODE;
----------------------------------------------

エラーが起きたときにファンクションは1を返すようにしているのですが、
それがSQLPLUSの実行結果の戻り値に反映されません。
どうしたらいいのでしょうか?

よろしくお願いします。

A 回答 (1件)

特殊変数$!を使えば良いんじゃないかと思います。



$sqlcmd = "sqlplus$DBUSER$PASS\@DB_ALIAS\@$SQLFILE $OUTFILE";
system("$sqlcmd") || $sql_ret=$!;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A