我有一个用户定义的oracle函数,它返回一个可以大于255的数字。我使用sql plus从shell脚本调用该函数,它返回值,例如296,但脚本接受它为40,这是因为脚本只能接受0-255的返回码。
这就是我目前收到的价值
echo ${PASSWORD} | sqlplus ${USERNAME}@${SID} @$SQL getnumber.sql $PARAM> ${LOG}
number=$?
getnumber.sql有
set serveroutput on size 100
VARIABLE rc NUMBER;
call function_get_number('&2') into :rc;
print rc;
exit :rc;
我如何保留返回值?我应该把它写到文件中吗?如果是这样的话/在哪里
答案 0 :(得分:1)
脚本getnumber.sh:
cat << EOF | sqlplus /S /nolog >${LOG}
conn ${USERNAME}/${PASSWORD}@${SID}
set serveroutput on size 100
VARIABLE rc NUMBER;
exec :rc := function_get_number('$PARAM');
SELECT 'RETVAL:' || :rc || ':' theval FROM dual;
EOF
RC=$( grep '^RETVAL:' ${LOG} | cutr -d":" -f2 )
echo $RC