When you want SP to return message_text and you also want to handle error code as per your choice, follow this simple example.

CREATE PROCEDURE myproc(
        OUT v_msg VARCHAR(300))
LANGUAGE SQL
BEGIN
   DECLARE V_ERROR INTEGER DEFAULT 0;
   DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 
      BEGIN
         GET DIAGNOSTICS EXCEPTION 1 V_MSG = MESSAGE_TEXT;
         SET V_ERROR = SQLCODE;
      END;

   SET v_msg = '';

   -- DO SOME SQL that throws the error and do conditional processing but want to see detailed 
   -- error message so that you can see what went wrong.

   IF V_ERROR < 0 THEN
      RETURN -6786; -- Code that want to process later on return through application
   END IF;
END

The OUT parameter v_msg will give you detailed error message that DB2 will throw and you handled error as per your condition code.