Bnj à tous
je vaudrai crée une sequence comme suite :
L'année courante + un nombre séquentiel sur 9 position qui s'incrémente autotiquement.
merci à tous
Bnj à tous
je vaudrai crée une sequence comme suite :
L'année courante + un nombre séquentiel sur 9 position qui s'incrémente autotiquement.
merci à tous
On n'est pas là pour faire ton boulot, donc la prochaine fois merci de préciser ce qui te manque pour avancer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CREATE SEQUENCE masequence; SELECT TO_CHAR(sysdate || masequence.nextval) ...
Le mieux serait d'appeler une fonction sur la séquence. Un truc du genre :
Et dans ta fonction tu récupères l'année courante, tu manipules le nombre reçu en paramètre pour le mettre TOUJOURS sur 9 digits et tu retournes le tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT MonPackage.GenereNombre(masequence.nextval) FROM DUAL
une fonction qui fait un nextval ??? C'est quoi l'intérêt ?
Je rappelle aussi qu'on peut donner une valeur max à une séquence, ici ce sera 999999999![]()
voila ce que j'ai fait moi ; mais sa marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 declare a number; n number; begin select max(NomTable.champ1 mod 100000000)+1 into a from NomTable; if a is null then a:=1; end if; n:=100000000+ to_number(to_char(sysdate,'yyyy'))*10000+a; insert into NomTable(champ1) values(n); end;
ce que je veut c'est d'inserer directement la valeur du champ1.
mais sa ne donne rien![]()
Elle est où ta séquence là ??
Reprenons à 0. Tu as quoi, tu veux quoi et comment ?
Partager