如何从Korn Shell脚本调用oracle函数?

时间:2017-05-12 16:49:12

标签: oracle shell scripting ksh

我有一个用户定义的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;

我如何保留返回值?我应该把它写到文件中吗?如果是这样的话/在哪里

1 个答案:

答案 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