All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.plsqlopen.rules.plsql.RaiseStandardException.html Maven / Gradle / Ivy

The newest version!

You should review all the RAISE statements that causes a predefined exception, because usually this is a sign of bad logic. Consider this example:

CREATE OR REPLACE FUNCTION group_has_users(id IN NUMBER) RETURN BOOLEAN IS
  has_users BOOLEAN;
  user_id   user_group.user_id%TYPE;
BEGIN
  BEGIN
    SELECT user_group.user_id
      INTO user_id
      FROM user_group
     WHERE user_group.group_id = id;
     
    RAISE TOO_MANY_ROWS;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      has_users := FALSE;
    WHEN TOO_MANY_ROWS THEN
      has_users := TRUE;
  END;
  
  RETURN has_users;
END;

In this case, the TOO_MANY_ROWS exception is being used as a flow control mechanism. This function could be rewritten to avoid the RAISE statement:

CREATE OR REPLACE FUNCTION group_has_users(id IN NUMBER) RETURN BOOLEAN IS
  number_of_users NUMBER;
BEGIN
  BEGIN
    SELECT COUNT(*)
      INTO number_of_users
      FROM user_group
     WHERE user_group.group_id = id;
  EXCEPTION
    WHEN OTHERS THEN
      number_of_users := 0;
  END;
  
  RETURN number_of_users > 0;
END;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy