1

我在 python 中为 sybase 数据库使用 isql 命令,如果数据库查询失败,isql 命令默认返回零作为返回码,如果查询失败,我希望它返回一些非零值,这样我就可以知道我的查询无效。

我在互联网上查看了它,我发现将 --retserverror 选项与 isql 一起使用可以解决问题,但是在使用它时出现了一些错误

我正在使用以下python代码:-

ps = subprocess.Popen("""./isql -S %s -U %s -P %s -D %s --retserverror -s "|" -w 10000 <<EOF
%s
go
EOF""" % (server,userid,password,database,Query),stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
error = ps.stderr.read()
out, err = ps.communicate()
if ps.returncode == 0:
   final = out
else:
         print "Error"
    final = error
print final

输出:-

Syntax Error in '--retserverror'.
usage: ./isql [-b] [-e] [-F] [-p] [-n] [-v] [-X] [-Y] [-Q]
    [-a display_charset] [-A packet_size] [-c cmdend] [-D database]
    [-E editor [-h header [-H hostname [-i inputfile]
    [-I interfaces_file] [-J client_charset] [-K keytab_file]
    [-l login_timeout] [-m errorlevel] [-M labelname labelvalue]
    [-o outputfile] [-P password] [-R remote_server_principal]
    [-s col_separator] [-S server_name] [-t timeout] [-U username]
    [-V [security_options]] [-w column_width] [-z localename]
    [-Z security_mechanism]

有人可以在这里指导我吗?

4

1 回答 1

0

您将需要使用raiseerror函数来设置错误号。可以使用添加自定义错误消息sp_addmessage

在此处查看我的答案以获取更多详细信息,答案链接到 Sybase ASE 15.5 文档。

以下是 ASE 12.5.1 的链接:

raiserror sp_addmessage

于 2014-09-03T13:50:05.343 回答