zoukankan      html  css  js  c++  java
  • 在编写PL/SQL代码中使用SELECT语句时如何避免例外发生

    在使用SELECT语句为某变量赋值时,往往会出现"NO_DATA_FOUND"和"TOO_MANY_ROWS"等异常情况。

    使用SELECT语句分两种情况:

    第一种情况,判断某表中是否有符合某一条件的记录,这时使用聚组函数MAX就可以避免以上两个例外的发生。

    其格式:SELECTMAX(列1),MAX(列2)......INTO变量1,变量2......FROM基表WHERE条件,当没有符合条件的数据时,该语句返回空,即变量1,变量2......的值均为空,而不会出现"NO_DATA_FOUND"例外。

    另外使用聚组函数MAX的同时也就避免了"TOO_MANY_ROWS"例外。

    第二种情况,SELECT语句中含聚组函数SUM,这时如果使用了GROUPBY和HAVING子句,当没有符合条件的记录时将发生"NO_DATA_FOUND"例外,此时避免例外的办法是:去掉GROUPBY和HAVING子句,将HAVING子句的条件加到WHERE子句中。这样在使用SELECT语句时就不必再额外增加一段处理例外的代码,从而简化的代码的编写。

    另外使用SQL%NOTFOUND也是一种比较好的方式。

    SQL%NOTFOUND 是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true。否则返回false。这样的语句在实际应用中,是非常有用的。例如要update一行数据时,如果没有找到,就可以作相应操作。如:

    begin

      update salary set bonus = 1000 where emp_id = 10;

      if sql%notfound then

         raise e_noteffact;

      end if;

    当update emp_id为10的这行记录,而这行记录不存在,则作了相应的异常抛出。

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/liuweicong39/p/2534735.html
Copyright © 2011-2022 走看看