【发布时间】:2017-05-12 13:54:21
【问题描述】:
大家好。
在我的 SP 中,有一个这样的 SELECT 查询。
SELECT val_01, val_02 INTO var_01, var_02 FROM table_name WHERE col_name = condition_01;
此查询正常工作。
但我已经为 SQLWARNING 添加了退出处理程序,当上面的 SELECT 查询没有结果时,它会像这样发出 SQL WARNING 并停止。
无数据 - 提取、选择或处理零行
我用谷歌搜索并找到了解决此问题的方法。它正在像这样更改查询...
SELECT var_01 = val_01, var_02 = val_02 FROM table_name WHERE col_name = condition_01;
此查询有效。但是原始查询和修改后的查询之间存在差异。
在 SP 中,原始的不会抛出 SELECT 查询的结果。它只是将 SELECT 查询的值放入变量中。
但是后一个会抛出它的 SELECT 结果和变量的值。
所以我调用 SP 的 cpp 代码得到了错误的值。
我可以将查询更改为..
SET var_01 = SELECT val_01 FROM table_name WHERE col_name = condition_01;
SET var_02 = SELECT val_02 FROM table_name WHERE col_name = condition_01;
但如你所知,这是非常低效的,下面的查询不起作用。
SET var_01, var_02 = (SELECT val_01, val_02 FROM table_name WHERE col_name = condition_01);
有没有一种有效的方法可以得到与原始查询相同的结果?
请帮助我。谢谢。
【问题讨论】:
-
然后在您的退出处理程序中解决这个特定情况(例如,如果第一个查询没有返回任何记录,则不要退出)。
标签: mysql stored-procedures mariadb