J'ai un problème avec la table de retour à l'aide de la procédure SQL.
Mon code: P>
CREATE PROCEDURE return_data(surname character varying)
LANGUAGE SQL
AS $$
SELECT * FROM peopple WHERE surname=surname
$$;
CALL return_data('Jobs');
3 Réponses :
Les procédures ne sont pas destinées à renvoyer quoi que ce soit. Utilisez une fonction de retournement définie
select *
from return_data('Jobs');
Une fonction peut revenir mais une procédure ne peut pas. C'est vrai, je veux ajouter à cela que nous utilisons généralement une fonction pour renvoyer des valeurs d'un type (en général une valeur) Tandis que, Procédure ne revient jamais mais peut se comporter comme une fonction sans déclaration de retour à l'aide des paramètres. Pour ajouter à cela, nous utilisons la procédure lorsque nous ne voulons pas revenir dans des déclarations de SQL réelles, mais si nous avons besoin d'une procédure pour donner de multiples valeurs, nous pouvons effectuer une procédure comme une fonction pour les valeurs multiples VJA. p>
Comme une table est accessible par type d'enregistrement ou de tableau en fonction de l'homogénéité. Par conséquent, utilisez la fonction avec le type de retour comme enregistrement / tableau. p>
Par conséquent, comme fonction est uniquement utilisée pour renvoyer une sortie unique, nous devons spécifier via le retour. p>
Je ne suis pas sûr de comprendre cette réponse. Les fonctions peuvent renvoyer une ou plusieurs colonnes et une ou plusieurs lignes. Les procédures ne sont pas vraiment destinées à renvoyer quoi que ce soit, mais vous pouvez les forcer à utiliser des paramètres inout.
Vous pouvez ajouter une ou plusieurs lignes sur le jeu de résultats:
SELECT * FROM return_data("a surname");