我有一个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
答案 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
。