Bonjour à tous.
Je cherche à faire une fonction qui prend en paramètre un nom de séquence, qui vérifie si cette séquence existe, et qui retourne la valeur de son NEXTVAL.
Si la séquence n'existe pas, elle est créée par la fonction.
J'ai réussi sans difficulté à créer la séquence si elle n'existe pas, néanmoins, je n'arrive pas à retourner la valeur de NEXTVAL.
Mon problème vient du fait que je ne sais pas sur quel objet je dois appeler le .NEXTVAL (s_seqname ou '||s_seqname||').
Voici mon bout de code :
Les erreurs de compilations sont pour la ligne SELECT s_seqname.NEXTVAL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE or REPLACE FUNCTION F_CHECK_CREATE_SEQ (s_seqname varchar2) RETURN NUMBER AS nb INTEGER; res INTEGER; BEGIN SELECT COUNT(*) INTO nb FROM USER_SEQUENCES WHERE sequence_name=s_seqname; if nb=0 then execute immediate 'CREATE SEQUENCE '|| s_seqname||' START WITH 1 INCREMENT BY 1 MAXVALUE 9999 NOCYCLE'; end if; SELECT s_seqname.NEXTVAL INTO res FROM dual; RETURN res; END;
Avec '||s_seqname||'.NEXTVAL j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Erreur(11,3): PL/SQL: SQL Statement ignored Erreur(11,10): PLS-00487: Invalid reference to variable 'S_SEQNAME' Erreur(11,10): PL/SQL: ORA-02289: sequence does not exist
Si quelqu'un peut simplement m'expliquer pourquoi cela n'est pas possible d'exécuter le SELECT je lui en serait très reconnaissant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Erreur(11,3): PL/SQL: SQL Statement ignored Erreur(11,26): PL/SQL: ORA-00923: FROM keyword not found where expected
Je poursuis mes recherches en attendant, merci de votre aide.
Cdt
Partager