MySQL stored procedure - distinguish between note and error -
i have stored procedure executes stored sql.
however, error-handler kicks-in , exits if user attempts execute
drop temporary table if exists t_person; and 't_person' doesn't exist. i'm happy generate error when 'if exists' not given, how avoid error earlier case (the error-code unchanged)?
here's error handler:
declare exit handler sqlexception begin set @sql = 'select \'invalid sql or bad parameter resulting in invalid sql\' `error`'; prepare stmt @sql; execute stmt; end;
you use continue handler rather an exit handler catches mysql error 1051 "unknown table"...
declare continue handler 1051 begin end; -or-
declare continue handler sqlstate '42s02' begin end; edit
to catch mysql error in exception handler, need specify mysql error number or corresponding sqlstate caught. (you specify named condition, named condition has resolve mysql error number or sqlstate).
a syntax error throw mysql error 1064.
if table foo exists, , issue
create temporary table if not exists `foo` (id int); that throw mysql error 1050.
to catch error, declare handler that. assuming want "swallow" exception , continue processing...
declare continue handler 1050 begin end; reference: https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
like p_person in drop temporary table statement looks wrong me; @ least, i'm not familiar using like keyword in drop table statement.
Comments
Post a Comment