SQL RAISE_ERROR scalar function in DB2 for i SQL |
RAISE_ERROR
The RAISE_ERROR function return an error with the specified SQLSTATE along with SQLCODE -438 and error condition. The RAISE_ERROR function always returns the null value./p>
Syntax of RAISE_ERROR
RAISE_ERROR(sqlstate, diagnostic-string)
sqlstate is exactly of 5 characters. Rules for sqlstate.
diagnostic-string is a character string with a data type of CHAR or VARCHAR and a length of up to 70 bytes.
Notes:
Since RAISE_ERROR is return value data type is undefined, therefore it can only be used in a SET host-variable or SQL procedure language assignment statement. To use this function in select statement then we must use a cast specification to give a data type to the null value that is returned.
Example using RAISE_ERROR
SELECT CASE WHEN 35 < 16 THEN 'LESSER' ELSE RAISE_ERROR('60002', 'GREATER than 35') END FROM sysibm.sysdummy1
Query cannot be run. See lower level messages.
DSPJOBLOG on command line
3 > strsql Message GREATER than 35 returned from SIGNAL, RESIGNAL, or RAISE_ERROR. User-defined function error on member SYSDUMMY1. Cancel reply received for message CPF503E. Job 529555/EASYCLASS/QPAD100947 changed by JOBMANAGER. Job 529555/EASYCLASS/QPAD100947 changed by JOBMANAGER. 3>> dspjoblog
Take F1 on messages
Additional Message Information Message ID . . . . . . : SQL0438 Severity . . . . . . . : 30 Message type . . . . . : Diagnostic Date sent . . . . . . : 03/29/24 Time sent . . . . . . : 11:38:12 Message . . . . : Message GREATER than 35 returned from SIGNAL, RESIGNAL, or RAISE_ERROR. Cause . . . . . : An application has executed a SIGNAL or RESIGNAL statement, the RAISE_ERROR function has been invoked, or an error was signalled within a MERGE statement. If the application is an SQL procedure, function, trigger, or a compound (dynamic) statement, the SQLSTATE was not handled in the SQL routine. The message returned is GREATER than 35. Recovery . . . : See the documentation for the application that issued the SIGNAL or RESIGNAL statement or invoked the RAISE_ERROR function.
Additional Message Information Message ID . . . . . . : CPF503E Severity . . . . . . . : 30 Message type . . . . . : Diagnostic Date sent . . . . . . : 03/29/24 Time sent . . . . . . : 11:38:12 Message . . . . : User-defined function error on member SYSDUMMY1. Cause . . . . . : An error occurred while invoking user-defined function RAISE_ERROR in library QSYS2. The error occurred while invoking the associated external program or service program QSQSSUDF in library QSYS, program entry point or external name RAISE_ERROR, specific name RAISE_ERROR. The error occurred on member SYSDUMMY1 file SYSDUMMY1 in library SYSIBM. The error code is 1. The error codes and their meanings follow: 1 -- The external program or service program returned SQLSTATE 60002. The text message returned from the program is: GREATER than 35 . 2 -- The external program failed before it completed. 3 -- The database timed out waiting for the program to return. The timeout value used by the database was 0 minutes and 30 seconds. More...