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
¿Fue útil?

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
scroll top