2

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

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

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

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

3 回答 3

2

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


if [[ $? != 0 ]]; then
    print "stored procedure failed"
    exit
fi
于 2009-05-20T14:32:48.433 回答
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"
于 2009-06-12T16:53:29.097 回答
0

添加--retserverrorISQL 命令,然后$?按照 Nikolai 所述使用。

于 2019-10-23T11:56:04.753 回答