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:
et puis ma function:
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE SEQUENCE auto_Ref START WITH 1 INCREMENT BY 1 MAXVALUE 99999;
le message d'erreur que j'obtient (actuellement ) est:
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; /
Que puis-je faire?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
MERCI BEAUCOUP
[Modération : Titre initial ("[Debutant] Insert dans une functionPL/SQL") édité par LeoAnderson]
Partager