Sybase procedimiento almacenado llamado desde isql en AIX: cómo manejar código de retorno
-
23-08-2019 - |
Pregunta
Tengo un trabajo por lotes que utiliza AIX isql para ejecutar un procedimiento almacenado en Sybase. El procedimiento almacenado devuelve un código de error bajo ciertas condiciones. Me gustaría que isql para que pasen código de retorno a la secuencia de comandos de AIX.
¿Puedo capturar el código de retorno del procedimiento almacenado dentro de isql, o tengo que escribir un archivo de salida de algún tipo y tener mi guión AIX comprobar que?
Esto es lo que el comando isql se parece. Se está ejecutando dentro de un script de shell Korn.
isql -D$database -S$server -U$userId -P$password << EOF
EXEC MY_STORED_PROC $AN_INPUT_PARAMETER
go
EOF
Solución
Si no recuerdo mal, el $?
se establece en el valor de retorno de comandos.
Añadir algo como esto después de la línea EOF
:
if [[ $? != 0 ]]; then
print "stored procedure failed"
exit
fi
Otros consejos
¿Es esto lo que quería lograr?
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"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow