La sélection de fonctions est possible dans d'autres moteurs. Par exemple, Oracle vous permet d'écrire une fonction qui renvoie une table de type défini par l'utilisateur. Vous pouvez définir des ensembles de résultats dans la fonction, les remplir à l'aide de requêtes ou même en utilisant une combinaison de sélections et de code. Finalement, le jeu de résultats peut être renvoyé à partir de la fonction, et vous pouvez continuer à interroger à ce sujet en utilisant :
select * from table(FunctionToBeCalls(parameters));
Le seul inconvénient est que cet ensemble de résultats n'est pas indexé, il peut donc être lent si la fonction est utilisée dans une requête complexe.
Dans MySQL, rien de tel n'est possible. Il n'existe aucun moyen d'utiliser un jeu de résultats d'une procédure directement dans une requête de sélection. Vous pouvez renvoyer des valeurs uniques à partir d'une fonction et vous pouvez utiliser OUT
ou INOUT
paramètres à votre procédure pour renvoyer des valeurs.Mais des ensembles de résultats entiers ne sont pas possibles. Remplir une table temporaire dans votre procédure est le plus proche que vous obtiendrez.