Equivalent à NextVal d'Oracle
Je viens de m'apercevoir que le message auquel j'ai repondu est marqué comme "Résolu". Pour que mon message ait un peu plus de visibilité je crée donc ce nouveau topic en faisant juste un copier coller provenant de
http://www.developpez.net/forums/viewtopic.php?t=368270
Citation:
Bonjour,
je rebondis sur la proposition de "Fadace" sur la table de compteur.
En effet, je cherche moi aussi a retrouver le fonctionnement du NextVal sous oracle.
Je souhaite recuperer via une requete sql une valeur faisant office de compteur. Donc, une fois que j'ai recuperé cette valeur, il faut qu'elle soit incrementée d'une unité pour la prochaine demande. Le fonctionnement de NextVal quoi Smile
La seule solution que j'ai trouvé avec MSSQL sans les identity correspond en gros à ca:
Créer une table Compteur avec deux colonnes : NomCompteur, ValCompteur
Créer une fonction NextValFromCompteur(NomCompteur)
Dans cette fonction, je fais un lock sur la table compteur , je recupere ma valeur pour un nom de compteur donné, je fais un update de ma valeur+1 et je renvoie ma valeur...
Je n'ai pas mis de code car je ne connais pas du tout MSSQL, donc je ne sais pas encore faire ce que j'explique au dessus Smile
Je voudrais juste savoir si c'est la bonne methode ou s'il existe plus simple... Et si quelqu'un à deja réaliser ce genre de table et de fonction et qu'il veut bien partager son code alors là je serais comblé Rolling Eyes
Mais sinon juste savoir si c'est la bonne methode serait deja un grand pas pour moi.
Merci
:wink:
La méthode est bonne mais en procédure pas en fonction
Bonjour,
La méthode est bien celle que tu as décrit. Seulement dans une fonction Transact-Sql, on ne peut pas mettre un update d'une table. Alors, il te faudra utiliser une procedure avec une variable output qui retournera ton compteur.
Les étapes sont :
1. Créer la table des compteurs.
2. Créer une procédure procName(NomCompteur, newValeur output)
La procédure lit la valeur du compteur voulu et l'incrémente.
Elle récupère la nouvelle valeur sur newValeur.
3. Récupérer la variable output et l'utiliser pour la suite de ton programme.
J'espère que mon explication était claire. Et si tu as besoin de plus d'aide fait moi signe.
:wink: