ITPub博客

首页 > 数据库 > Oracle > SELECT INTO 技巧:0 & 1问题

SELECT INTO 技巧:0 & 1问题

原创 Oracle 作者:幕南风 时间:2014-07-03 13:44:02 0 删除 编辑
       当我们必须从一个表选择数据插入到临时变量,但所选的数据或者存在或者不存在
       也就是返回或者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;
/ 

       注释: 
           这种方法是为了防止因为没有约束而导致表存在多行的情况

<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1207964/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: PLS_INTEGER类型对性能的些许奉献
下一篇: INSTEAD OF 触发器的使用陷阱
请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

最新文章