Sybase存储过程从AIX上的isql调用:如何处理返回代码

时间:2009-05-20 13:57:10

标签: database unix stored-procedures sybase batch-processing

我有一个AIX批处理作业,它使用isql在Sybase中执行存储过程。存储过程在某些条件下返回错误代码。我想让isql将该返回代码传递给AIX脚本。

我可以在isql中捕获存储过程的返回代码,还是必须编写某种输出文件并让我的AIX脚本检查一下?

这是isql命令的样子。它在Korn shell脚本中运行。

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

3 个答案:

答案 0 :(得分:2)

如果我没记错的话,$?被设置为命令返回值。 在EOF行之后添加类似的内容:


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

答案 1 :(得分:0)

这是你想要达到的目标吗?

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"

答案 2 :(得分:0)

在ISQL命令中添加dynamic,然后使用Nikolai提到的--retserverror