当
我们必须从一个表选择数据插入到临时变量,但所选的数据或者存在或者不存在
也就是返回或者0行或者1行
那么该如何有效的避免数据不存在的情况?
下面有几种技巧,希望可以帮到你
注释:
--在异常处理句柄,之所以失却others,Think认为,是基于以后能捕获到异常
--others会把所有未处理异常全部吞掉
方法二:
方法三:
注释:
这种方法是为了防止因为没有约束而导致表存在多行的情况
也就是返回或者0行或者1行
那么该如何有效的避免数据不存在的情况?
下面有几种技巧,希望可以帮到你
方法一:
DECLARE
l_sal emp.sal%TYPE;
p_empno emp.empno%TYPE := 123; -- Invalid empno number
BEGIN
BEGIN
SELECT sal
INTO l_sal
FROM emp
WHERE empno = p_empno;
EXCEPTION
WHEN no_data_found THEN
l_sal := 0;
END;
END;
/
注释:
--在异常处理句柄,之所以失却others,Think认为,是基于以后能捕获到异常
--others会把所有未处理异常全部吞掉
方法二:
DECLARE
l_sal emp.sal%TYPE;
p_empno emp.empno%TYPE := 123; -- Invalid empno number
BEGIN
SELECT NVL(MAX(sal), 0)
INTO l_sal
FROM emp
WHERE empno = p_empno;
END;
/
方法三:
DECLARE
l_sal emp.sal%TYPE;
p_empno emp.empno%TYPE := 123; -- Invalid empno number
BEGIN
SELECT NVL(MAX(sal), 0)
INTO l_sal
FROM emp
WHERE empno = p_empno
HAVING count(1) <= 1;
END;
/
注释:
这种方法是为了防止因为没有约束而导致表存在多行的情况