当非空结果集时,MySQL可以给出非零返回代码吗?



我正在使用Linux和MySQL 5.6

我以这种方式运行 mysql:

mysql --user=XXX --password=XXX < myfile.sql

以下是我的文件的内容.sql

select * from account where balance < 0

我想做的是:

当至少有一个账户余额为负时,请给出非零返回代码。

然后我的脚本可以像这样检查这种情况:

mysql --user=XXX --password=XXX < myfile.sql
if [[ $? -gt 0 ]]
then
    echo ERROR: Negative balance
fi

我能做到这一点吗?

或者,有没有其他方法?

2016-05-28 更新:

实际上,我现实生活中的案例很复杂。 我使用这个简单的例子是为了便于表达我的问题。

实际上,shell脚本函数中是否有类似[ return ]语句的内容,以便我可以根据不同的情况给出不同的返回码?

对于下面的接受答案,看起来MySQL无法生成自定义返回代码。 将 count(*) 作为输出显示的最后一行似乎是一种替代方法。

更改 SQL 以计算行数,而不是返回数据:

select COUNT(*) as total from account where balance < 0

然后捕获输出,这是生成的行数据(而不是返回的结果代码 $?,这只是查询执行的成功),使用 sed 跳过第一行(列别名"total"),然后第二行是您的行数。

out=$(/opt/local/lib/mysql5/bin/mysql --user=XXX --password=XXX < myfile.sql | sed -n 2p)
if [[ $out -gt 0 ]]
then
    echo ERROR: Negative balance
fi

我已经在MacOSX而不是Linux上测试过这个,但原理应该是相同的。

(当然 - 你不会在源代码中嵌入你的数据库密码,是吗!

相关内容

  • 没有找到相关文章

最新更新