L'écriture d'une instruction select à l'intérieur d'un Oracle fonction définie par l'utilisateur
Je suis assez nouveau pour Oracle SQL (même si je l'ai écrit un peu juste de SQL) et j'ai du mal à l'incorporation d'une simple instruction SELECT dans une fonction. Il se sent comme SQL ABC mais je n'arrive pas à l'obtenir 🙁
Je pense je suis à l'aide de PL-SQL
Voici ce que j'ai à ce jour:
create or replace FUNCTION GET_GROUP_BY_ID RETURN VARCHAR2
AS my_result
BEGIN
SELECT fav_group.name
INTO my_result
FROM fav_group
WHERE fav_group.id = 12345
RETURN my_result;
END GET_GROUP_BY_ID;
Comme je l'ai dit, j'en ai essayé BEAUCOUP de variations sur le code ci-dessus en regardant les exemples de code sur google, mais n'arrive pas à obtenir ce droit.
OriginalL'auteur the_new_mr | 2010-11-10
Vous devez vous connecter pour publier un commentaire.
Utilisation:
Le problème a été my_result a été utilisé comme une variable, mais jamais déclaré.
J'ai utilisé le
%TYPE
notation de déclarer la variable de sorte qu'il a utilisé le même type de données que la colonne qui est utilisé pour le remplir. Si le type de données de colonne ne change jamais, la variable change automatiquement en fonction de -- pas de problèmes avec le type de données des questions après que les modifications de la table, sauf si vous supprimez la colonne entièrement.Erreur(15,3): PLS-00103: Rencontré le symbole "RETOUR" lorsque attend l'une des opérations suivantes: * & - + ; / au mod reste rem <un exposant (**)>, et ou d'un groupe ayant croisent moins l'ordre de départ de l'union où connect || multiset
Erreur(17,21): PLS-00103: Rencontré le symbole de la "fin de fichier" lorsque attend l'une des opérations suivantes: fonction début pragma package de procédure sous-type du type d'utilisation <un identificateur> <un double-cité délimité par l'identificateur de> la forme actuelle du curseur
Essayez-le maintenant - j'ai oublié le point-virgule pour mettre fin à l'instruction SELECT. Avait déjà retiré la clé DECLARE ~6 minutes ago -- vous devriez vraiment rafraîchir la page avant de la copier/coller dans le cas où quelqu'un les mises à jour de leur réponse.
Merci -- j'ai rarement inclus le nom de la fonction à la FIN de la notation. Trop occupé pour s'assurer que j'étais premier :/
OriginalL'auteur OMG Ponies
En réponse à mon dernier commentaire de OMG Poneys réponse ci-dessus:
Pour en obtenir un plus d'un résultat à partir d'une fonction, utilisez le CURSEUR REF
OriginalL'auteur the_new_mr