Sybase хранит proc, вызываемый из isql в AIX: как обрабатывать код возврата - PullRequest
2 голосов
/ 20 мая 2009

У меня есть пакетное задание AIX, использующее isql для выполнения хранимой процедуры в Sybase. Хранимая процедура возвращает код ошибки при определенных условиях. Я бы хотел, чтобы isql передал этот код возврата сценарию AIX.

Могу ли я перехватить код возврата сохраненного процесса в isql, или мне нужно написать какой-нибудь выходной файл и проверить мой скрипт AIX?

Вот как выглядит команда isql. Он работает внутри сценария оболочки Korn.

isql -D$database -S$server -U$userId -P$password << EOF
EXEC MY_STORED_PROC $AN_INPUT_PARAMETER
go
EOF

Ответы [ 2 ]

2 голосов
/ 20 мая 2009

Если я правильно помню, $? устанавливается на возвращаемое значение команды. Добавьте что-то вроде этого после строки EOF:


if [[ $? != 0 ]]; then
    print "stored procedure failed"
    exit
fi
0 голосов
/ 12 июня 2009

Это то, что вы хотели достичь?

isql -D$database -S$server -U$userId -P$password << EOF | grep RETVAL | awk -F"=" '{print $2}' | read value
declare @retval int
EXEC @retval = MY_STORED_PROC $AN_INPUT_PARAMETER
SELECT "RETVAL=" + convert(varchar, @retval)
go
EOF

echo "Procedure returned: $value"
...