2009-05-20 1 views
2

behandeln Ich habe einen AIX Batch-Job bekommt, die isql eine gespeicherte Prozedur in Sybase ausführen verwendet. Die gespeicherte Prozedur gibt unter bestimmten Bedingungen einen Fehlercode zurück. Ich möchte, dass isql diesen Rückgabecode an das AIX-Skript übergibt.gespeichert Sybase proc von isql unter AIX genannt: wie Return-Code

Kann ich erfassen die die gespeicherte Prozedur der Return-Code innerhalb isql, oder muss ich eine Ausgabedatei von einer Art zu schreiben und mein AIX-Skript, das überprüfen?

So sieht der Befehl isql aus. Es läuft in einem Korn-Shell-Skript.

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

Antwort

2

Wenn ich mich richtig erinnere, ist die $? auf den Befehl Rückgabewert gesetzt. so etwas wie dies nach der EOF Linie hinzufügen:


if [[ $? != 0 ]]; then 
    print "stored procedure failed" 
    exit 
fi 
+0

Danke für die Post. Ich wusste nicht über $?. Das bringt mich auf halbem Weg dorthin. isql gibt immer noch 0 zurück, obwohl der gespeicherte Prozess einen anderen Wert zurückgibt. Irgendeine Idee, wie ich isql bekommen kann, um den Rückgabewert des gespeicherten Procs zu erkennen? –

+1

Hmm, meine beste Wette wäre, mit den Fehlerstufen (Option -m) zu spielen und/oder isql in eine Datei umzuleiten und eine schnelle sed/awk zu machen. –

0

Ist das, was Sie erreichen wollten?

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" 
Verwandte Themen