|Since MySQL 5.5, MySQL stored routines can raise custom errors using the ISO SQL standard error signalling command |
Suppose you have a tree-read sproc that uses recursive common table expression syntax, available only since MySQL 8.0 and MariaDB 10.2. Before those versions, the sproc can't be created. Your database runs on earlier and more recent MySQL releases.
Write a caller sproc: it calls the tree reader if the server version is adequate, otherwise gracefully reports an error and exits ...
drop procedure if exists treewalk; delimiter go create procedure treewalk( root int unsigned ) begin declare custom_exception condition for sqlstate '45000'; if floor( version() ) < 8 then -- can't run before these versions signal custom_exception set message_text = 'This procedure requires MySQL 8 or later, or MariaDB 10.2 or later.'; end if; call treereads( root ); end; go delimiter ;
Last updated 16 Aug 2019