J'ai besoin de soulever de manière conditionnelle une erreur, mais je ne peux utiliser qu'une seule déclaration et aucune procédure stockée.
J'aimerais faire quelque chose comme ça:
select case when foo = "bar" then 1 else SIGNAL SQLSTATE 'ERROR' end;
Malheureusement, le signal est uniquement utilisable dans des déclencheurs et des procédures et je dois l'utiliser dans une application existante qui ne me permet que de saisir des déclarations, mais pas des procédures. (Je n'ai qu'une ligne longue et aucun moyen de définir un délimiteur, etc.)
Y a-t-il une autre façon de provoquer une erreur d'exécution?
Récupérez la colonne d'une table avec plusieurs rangées dans la partie autre
select case when foo = "bar" then 1 else (select table_name from information_schema.tables) end;
Comme exemple, utilisons @foo au lieu de foo
mysql> select case when @foo = "bar" then 1 else (select table_name from information_schema.tables) end;
ERROR 1242 (21000): Subquery returns more than 1 row
Essaie !!