Ce script sert à optimiser l'insertion d'enregistrements dans une base. La fonction renvoie (dans le cas present pour la table patient) le premier identifiant manquant (PK) dans la table, ainsi plus de discontinuités dans les IDs ...
Cordialement Djhal
Source / Exemple :
CREATE FUNCTION Find_Id() RETURNS INT
AS
BEGIN
DECLARE @cpt INT
DECLARE @tmp INT
DECLARE curseur CURSOR FOR
(
SELECT id_pat
FROM patient
)
OPEN curseur
FETCH NEXT FROM curseur
INTO @cpt
IF @cpt!=NULL
BEGIN
SET @tmp=@cpt-1
END
ELSE
BEGIN
SET @tmp=0
END
WHILE @@FETCH_STATUS=0
BEGIN
IF @tmp+1!=@cpt
BEGIN
CLOSE curseur
DEALLOCATE curseur
RETURN @tmp+1
END
SET @tmp=@cpt
FETCH NEXT FROM curseur
INTO @cpt
END
CLOSE curseur
DEALLOCATE curseur
RETURN @tmp+1
END
Conclusion :
Afin d'optimiser le script :
- on pourrait faire passer le nom de la table en parametres ( ds le code patient ecrit en dur)
- ordonner la selection des enregistrements
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.