Я столкнулся с проблемой при захвате кода возврата хранимой процедуры. Я вызываю хранимую процедуру sybase в моем сценарии оболочки korn, используя оператор isql, как указано ниже.
isql -U ${APPLID} -S{SERVER}> ${sqlMsg} << EOF
use ${DATABASE}
go
exec stored_procedure
go
EOF
returncode=$?
Если внутри хранимой процедуры возникает ошибка, я не могу ее зафиксировать, если буду следовать приведенному ниже методу.
if [ $returncode -ne 0 ]
then
print "failed"
fi
Я попытался использовать оператор возврата внутри хранимой процедуры, такой как return (1)
но это не дало мне ожидаемых результатов. Когда я повторял код возврата, он отображался как 0, даже после возврата статуса как 1. Статус возврата как 1 был замечен в журналах sql.
@@error
сохраняет ошибку для последнего оператора. Он возвращает 0, если ошибки нет, или конкретный номер ошибки, если ошибка произошла. - person Michael Gardner   schedule 18.02.2014