IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

help : fonction table avec curseur dedans


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut help : fonction table avec curseur dedans
    Bonjour, je souhaite faire une boucle sur la fonction "fn_get_Zones" qui me renvoie des id zone. pour chaque id zone, j'appelle une autre fonction qui me renvoie les utilisateurs de la zone passée en paramètre "nr_User_Zone".

    sauf que quand je fais dans ma fonction table insert into @maListeZone les enregistrements reçus, j'ai des doublons. je voudrais bien faire une select union des valeurs reçus de "nr_User_Zone". comment faire ? ci-dessous ma fonction :

    -----------------------------
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER FUNCTION [dbo].[fn_get_Toutes_Zones] (@user int, @client int, @language int)
    RETURNS @maListeZone TABLE(iUser int, strLastName varchar(50), strFirstName varchar(50), userType int)
    AS
    BEGIN

    DECLARE @idZone int

    DECLARE Cursor_Zone CURSOR FOR
    select idZone from fn_get_Zones(@client,@language,@user)
    OPEN Cursor_Zone;

    FETCH NEXT from Cursor_Zone into @idZone

    WHILE @@FETCH_STATUS = 0
    BEGIN
    insert into @maListeZone (iUser, strLastName, strFirstName, userType) select * from [dbo].nr_User_Zone (@idZone, @client, @language)
    FETCH NEXT from Cursor_Zone into @idZone

    --if @@FETCH_STATUS <> 0 THEN
    -- SET @maListeZone = @maListeZone + " Union "
    --END IF
    END;

    CLOSE Cursor_Zone;
    DEALLOCATE Cursor_Zone;

    RETURN
    END
    GO

    ---------------------------

    merci de vos réponses que j'espère rapide.
    yo

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Salut,

    ce que je comprends de ton explication c'est que tes utilisateurs peuvent rattaché à plusieurs zones. D'où les doublons.

    Tu as deux choix :
    le premier est de récupérer ta liste dans @maListeZone en utilisant un DISTINCT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT iUser, strLastName, strFirstName, userType FROM @maListeZone.

    le second est d'utiliser une clause NOT EXISTS dans ton WHERE lors de l'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    insert into @maListeZone (iUser, strLastName, strFirstName, userType) 
    select nuz1.iUser, nuz1.strLastName, nuz1.strFirstName, nuz1.userType from [dbo].nr_User_Zone (@idZone, @client, @language) nuz1
    WHERE NOT EXISTS (SELECT 1 FROM @maListeZone mlz1 WHERE mlz1.iUser = nuz1.iUser)
    Ceci est le cas où le champ iUser est l'identifiant unique de ton utilisateur.
    J'espère que ca pourra t'aider.

    Cordialement.

Discussions similaires

  1. Mise a jour de table avec curseur
    Par MangoZaz dans le forum Langage SQL
    Réponses: 12
    Dernier message: 09/09/2014, 18h38
  2. Fonction Table avec Curseur dynamique
    Par Cyrille36 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/06/2013, 07h44
  3. [PostgreSQL] PDO et fonction postgresql avec curseur
    Par thecanea dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/10/2011, 13h48
  4. Création d'une table avec curseur
    Par Jinkas dans le forum SQL
    Réponses: 20
    Dernier message: 12/10/2010, 11h42
  5. ALTER plusieurs tables avec curseur et boucle
    Par abdelhamidem dans le forum PL/SQL
    Réponses: 7
    Dernier message: 13/05/2010, 20h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo