Sélection à partir d’une procédure stockée¶
Certaines procédures stockées renvoient des données tabulaires. Pour sélectionner et manipuler ces données tabulaires, vous pouvez appeler ces procédures stockées dans la clause FROM d’une instruction SELECT.
Exécuter une instruction SELECT avec le mot clé TABLE¶
Lors de l’appel de la procédure stockée, omettez la commande CALL. Utilisez plutôt le mot-clé TABLE et nommez la procédure entre parenthèses :
Exemple de sélection à partir d’une procédure stockée¶
Cet exemple utilise les données du tableau suivant :
La procédure stockée suivante renvoie des informations de commande en fonction d’un ID utilisateur :
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
L’instruction SELECT suivante récupère les résultats de la procédure stockée :
Limitations de la sélection à partir d’une procédure stockée¶
Les limitations suivantes s’appliquent à la sélection à partir d’une procédure stockée :
Seules les procédures stockées qui exécutent les instructions SELECT, SHOW, DESCRIBE, ou CALL peuvent être placées dans la clause FROM d’une instruction SELECT. Les procédures stockées qui effectuent des modifications à l’aide d’opérations DDL ou DML ne sont pas autorisées. Pour les procédures stockées qui émettent des instructions CALL, ces limitations s’appliquent aux procédures stockées qui sont appelées.
Seules les procédures stockées qui renvoient des données tabulaires avec un schéma de sortie statique peuvent être placées dans la clause FROM d’une instruction SELECT. Les colonnes de sortie doivent être nommées et typées. Par exemple, une procédure stockée avec la clause RETURNS suivante est prise en charge :
Une procédure stockée avec la clause RETURNS suivante n’est pas prise en charge car elle ne renvoie pas de données tabulaires :
Une procédure stockée avec la clause RETURNS suivante n’est pas prise en charge car elle ne fournit pas de schéma de sortie fixe :
La procédure stockée doit être appelée dans la clause FROM d’un bloc SELECT dans l’une des instructions suivantes :
La procédure stockée ne peut pas accepter d’arguments d’entrée corrélés provenant de leur portée externe, comme une référence à un CTE défini en dehors de l’instruction SELECT.
Si un argument contient une sous-requête, cette sous-requête ne peut pas utiliser de CTE défini par la clause WITH.
Une instruction SELECT contenant un appel de procédure stockée ne peut pas être utilisée dans le corps d’une vue, une fonction définie par l’utilisateur (UDF), une fonction de table définie par l’utilisateur (UDTF), ou dans des objets tels que des politiques d’accès aux lignes et des politiques de masquage des données.
Vous ne pouvez pas utiliser de variables de liaison dans une instruction SELECT qui appelle une procédure stockée. Par exemple, les instructions SELECT suivantes ne sont pas autorisées :