Bonjour,

Je voudrais inserer une ligne dans une table qui contient une clé primaire que je voudrais auto-incrémenter avec une sequence. Mon problème est de connaitre la clé générée dans la suite de l'éxecution de mon programme.
Pour cela, je me suis dis que le plus simple est de créer une fonction PL/SQL qui insert la ligne et retourne la valeur de la clé... mais je n'y arrive pas. Est il possible de faire un Insert dans une function? Pour quoi ne fonctionne t elle pas?

j'ai créé ma sequence:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE SEQUENCE auto_Ref      START WITH 1 INCREMENT BY 1 MAXVALUE 99999;
et puis ma function:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Create or replace Function add_truc (RefTruc VarChar2,truc2 VarChar2,truc3 Varchar2)
Return number is ref number;
Begin
	ref:= auto_Ref.nextVal;
	Insert into Tablevalues (ref,Reftruc,truc2,Truc3);
   Return ref;
End; 
/
le message d'erreur que j'obtient (actuellement ) est:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/2 PL/SQL: Statement ignored
4/25 PLS-00357: Référence de Table, Vue ou Séquence
'AUTO_REF.NEXTVAL' non autorisée dans ce contexte
Que puis-je faire?

MERCI BEAUCOUP


[Modération : Titre initial ("[Debutant] Insert dans une functionPL/SQL") édité par LeoAnderson]