Syntax:
DECLARE condition_name CONDITION FOR condition_value

condition_value: {
    mysql_error_code
  | SQLSTATE [VALUE] sqlstate_value
}

The DECLARE ... CONDITION statement declares a named error condition,
associating a name with a condition that needs specific handling. The
name can be referred to in a subsequent DECLARE ... HANDLER statement
(see [HELP DECLARE HANDLER]).

Condition declarations must appear before cursor or handler
declarations.

The condition_value for DECLARE ... CONDITION indicates the specific
condition or class of conditions to associate with the condition name.
It can take the following forms:

o mysql_error_code: An integer literal indicating a MySQL error code.

  Do not use MySQL error code 0 because that indicates success rather
  than an error condition. For a list of MySQL error codes, see Server
  Error Message Reference
  (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference
  .html).

o SQLSTATE [VALUE] sqlstate_value: A 5-character string literal
  indicating an SQLSTATE value.

  Do not use SQLSTATE values that begin with '00' because those
  indicate success rather than an error condition. For a list of
  SQLSTATE values, see Server Error Message Reference
  (https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference
  .html).

Condition names referred to in SIGNAL or use RESIGNAL statements must
be associated with SQLSTATE values, not MySQL error codes.

URL: https://dev.mysql.com/doc/refman/5.7/en/declare-condition.html

