Fonction renvoyant une occurrence (ROWTYPE) et test depuis SQL Developer
Bonjour.
Je souhaite disposer du code me permettant de réaliser ce cas d'utilisation :
1. Déclarer une fonction PL/SQL qui renvoie un enregistrement unique et complet d'une table selon une valeur de sa clé
2. Tester cette fonction depuis SQL Developper
Voici le code de déclaration de ma fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| create or replace
FUNCTION FNC_SAA_GetOrganeById
(
ORG_ID IN VARCHAR2,
ORGANE OUT rfp_organe_org%ROWTYPE
)
RETURN NUMBER AS
BEGIN
SELECT * INTO ORGANE FROM rfp_organe_org WHERE org_code = ORG_ID;
RETURN 1;
END FNC_SAA_GetOrganeById; |
Je ne sais pas quel type utiliser dans le code d'appel pour récupérer l'enregistrement en sortie de fonction (ici, test avec REFCURSOR) ... mais le code d'appel est celui-ci :
Code:
1 2 3 4 5
| variable RET_ORGANE REFCURSOR;
variable RET_CODE NUMBER;
execute :RET_CODE := fnc_saa_getorganebyid('A112',:RET_ORGANE);
print RET_CODE;
print RET_ORGANE |
J'obtiens un message d'erreur :
Code:
PLS-00306: numéro ou types d'arguments erronés dans appel à 'FNC_SAA_GETORGANEBYID'
Comment valider le code de ma fonction en affichant le contenu du paramètre de sortie 'ORGANE' ??
Merci de votre aide.
Validation par procédure stockée.
J'ai trouvé une solution me permettant de valider le code de la fonction depuis une procédure dont voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11
| create or replace
PROCEDURE TEST_FNC_SAA AS
RET_ORGANE rfp_organe_org%ROWTYPE;
RET_CODE NUMBER := 0;
BEGIN
RET_CODE := fnc_saa_getorganebyid('A11',RET_ORGANE);
DBMS_OUTPUT.PUT_LINE(RET_CODE);
DBMS_OUTPUT.PUT(RET_ORGANE.org_code || ' ');
DBMS_OUTPUT.PUT(RET_ORGANE.org_libelle_long || ' ');
DBMS_OUTPUT.NEW_LINE;
END; |
Je reste intéressé par une solution "pure SQL" (toujours avec SQL Developper) :)
Mauvaise lecture. Ca marche !
Pardon, j'avais effectivement mal lu 8O .
Le code fonctionne, merci !