HP 3000 Manuals

RAISE ERROR [ ALLBASE/SQL Reference Manual ] MPE/iX 5.5 Documentation


ALLBASE/SQL Reference Manual

RAISE ERROR 

The RAISE ERROR statement causes an error to occur and causes the given
error number to be put into the ALLBASE/SQL message buffer, together with
the given error text.  This statement is most useful within procedures
invoked by rules, to cause the rule to fail and the statement firing the
rule to have no effect.  The effect of RAISE ERROR is to return with an
error status; this statement can never "execute successfully."

Scope 

ISQL or Application Programs

SQL Syntax 

RAISE ERROR [ErrorNumber] [MESSAGE ErrorText]

Parameters 

ErrorNumber             specifies the number of the error being raised.
                        This can be any integer value.  ErrorNumber has
                        the following syntax:

                        {Integer            }
                        {:HostVariable      }
                        {?                  }
                        {:LocalVariable     }
                        {:ProcedureParameter}
                        The data type of the parameter, host variable, or
                        local variable must be INTEGER or SMALLINT. The
                        data type expected for the dynamic parameter is
                        INTEGER.

                        If no ErrorNumber is given, 2350 is the default
                        error number.  The error range 7000 - 7999 is
                        reserved for the RAISE ERROR statement.  No
                        ALLBASE/SQL errors are in this range.

                        Parameters and local variables may only be used
                        within procedures.  Host variables may only be
                        used within embedded SQL. Dynamic parameters may
                        only be used within dynamic SQL.

ErrorText               specifies text to be returned with the error.
                        ErrorText has the following syntax:

                        {'CharacterString'  }
                        {:HostVariable      }
                        {?                  }
                        {:LocalVariable     }
                        {:ProcedureParameter}
                        The data type of the parameter, host, or local
                        variable must be CHAR or VARCHAR. The data type
                        expected for the dynamic parameter is CHAR(250).
                        The value will be truncated to 250 bytes.

                        If no ErrorText is given, the default is an empty
                        string.

                        Parameters and local variables are only used
                        within procedures.  Host variables are only used
                        within embedded SQL. Dynamic parameters are only
                        used within dynamic SQL.

Description 

   *   RAISE ERROR is for user-defined errors.  The errors returned are
       application specific.

   *   If ErrorNumber or ErrorText is NULL, an error is returned and the
       message is not generated.

   *   ErrorNumber, if specified, must be greater than 0.

   *   Execution of RAISE ERROR causes the number of the raised error to
       be placed in sqlcode and the RAISE ERROR text to be placed in the
       message buffer.

       Since an error condition is the expected result of the statement,
       no corrective action need be taken except as directed by the
       application developer.  Applications can use SQLEXPLAIN to fetch
       the text of the message and interpret it appropriately.
       Applications can also examine and/or display sqlcode.

   *   You can use the DESCRIBE INPUT statement on this statement after
       you PREPARE it to show the number and characteristics of dynamic
       parameters, if any are used.

Authorization 

Any user can issue this statement.

Examples 

   1.  Example coded in a procedure to be invoked by a rule

            SELECT COUNT(*) INTO :rows FROM PurchDB.Orders
                WHERE VendorNumber = :VendorNumber;
            IF :rows <> 0 THEN
                RAISE ERROR 1 MESSAGE 'Vendor number exists in the "Orders" table.';
            ENDIF;

   2.  Interactive example

            isql=> raise error 1 message 'This is error 1'; 
            This is error 1
            isql=>

   3.  Example using dynamic parameters

            EXEC SQL PREPARE MyCmd from 'RAISE ERROR ? MESSAGE ?';

       Accept values for error number and message text into host
       variables :ErrorNumber and :ErrorText, then execute the prepared
       command:

            EXEC SQL EXECUTE MyCmd USING :ErrorNumber, :ErrorText;



MPE/iX 5.5 Documentation