【发布时间】:2019-08-12 16:07:17
【问题描述】:
我目前遇到一个错误,当我运行定义/选择到我设置的变量的存储过程时收到“未找到数据”错误消息。
我尝试了两种不同的方法。一个合并列和null(如下图):
BEGIN
BEGIN
SELECT COALESCE (max_value, 0) AS MAX_VALUE
INTO v_max_v
FROM table1
WHERE car_code = rcar;
--
SELECT COALESCE (min_value, 0) AS MIN_VALUE
INTO v_in_v
FROM table1
WHERE car_code = rcar;
END
END;
另一种方法是处理没有为每个变量返回行的异常。
BEGIN
BEGIN
SELECT max_value AS MAX_VALUE
INTO v_max_v
FROM table1
WHERE car_code = rcar;
EXCEPTION
WHEN NO_DATA_FOUND
THEN v_max_v := NULL;
END
--
SELECT min_value AS MIN_VALUE
INTO v_min_v
FROM table1
WHERE car_code = rcar;
EXCEPTION
WHEN NO_DATA_FOUND
THEN v_min_v := NULL;
END
END;
哪种方法更有效/成本更低?有没有客观的方法来检查自己? (解释计划仅适用于我认为的查询)
提前致谢。
【问题讨论】:
-
这些不做同样的事情。您仍然可以使用
COALESCE()得到NO_DATA_FOUND错误。因此,您应该使用第二个,因为它不是您想要的。 -
呃,我很笨。感谢您为我解决这个问题。不知道当我做出这个假设时我的思路是什么。