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

MS SQL Server Discussion :

T-SQL curseurs


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 5
    Points : 7
    Points
    7
    Par défaut T-SQL curseurs
    Salut je développe une procédure stockée en transact sql
    le script est simple, je récupère le nom des colonnes d'une table
    et ensuite je veux faire afficher les valeur propre a chaque colonne : j'ai besoin de deux curseurs
    voila le script


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    create procedure UPDATE_CUSTOMER 
    AS 
    DECLARE 
     
    @name_column varchar(30), 
    @valeur_column_adonix varchar(50), 
    @valeur_column_alloga varchar(50) 
     
    DECLARE MyCursor CURSOR 
    FOR 
    select name from syscolumns where id in (select id from sysobjects where name='ADONIX_CUSTOMER') 
     
    OPEN MyCursor 
    FETCH MyCursor INTO @name_column 
     
    WHILE @@fetch_Status = 0 
    BEGIN 
    --print @name_column 
    DECLARE MyCursor2 CURSOR 
    FOR 
    select @name_column from ADONIX_CUSTOMER 
     
    OPEN MyCursor2 
    FETCH MyCursor2 INTO @valeur_column_adonix 
     
    WHILE @@fetch_Status = 0 
    BEGIN 
    print @valeur_column_adonix 
    FETCH MyCursor2 INTO @valeur_column_adonix 
    END 
     
    CLOSE myCursor2 
    DEALLOCATE myCursor2 
     
    FETCH MyCursor INTO @name_column 
    END 
     
    CLOSE myCursor 
    DEALLOCATE myCursor
    le problème c'est qu'il m'affiche le nom de la colonne et non pas les valeurs enregistrées dans cette colonne.
    Il aime pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select @name_column from ADONIX_CUSTOMER
    quelqu'un a une idée ?

    Merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Pourquoi 2 curseurs ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    create procedure UPDATE_CUSTOMER 
    AS 
    DECLARE 
     
    @name_column varchar(30)
    DECLARE MyCursor CURSOR 
    FOR 
    select name from syscolumns where id = object_id('ADONIX_CUSTOMER') 
     
    OPEN MyCursor 
    FETCH MyCursor INTO @name_column 
     
    WHILE @@fetch_Status = 0 
    BEGIN 
    exec sp_executesql 'select '+ @name_column +' from ADONIX_CUSTOMER '
    FETCH MyCursor INTO @name_column 
    END 
     
    CLOSE myCursor2 
    DEALLOCATE myCursor2 
     
    FETCH MyCursor INTO @name_column 
    END 
     
    CLOSE myCursor 
    DEALLOCATE myCursor

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    j'arrive pas a exectuer le sql concatené
    et de plus j'aimerai pouvoir stocker l'ensemble des valeur que mon ordre sql me retourne....
    c'est galère jte jure

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    1)Créez votre chaine avant l'exécution et passer qu'une variable à sp_executesql
    2) vous voulez stocker dans quoi ? Une table temporaire ? Dans ce cas, comment gérer les différents types de données que vous rencontrerez ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL/SQL] curseur et clause WITH
    Par ljoly dans le forum Oracle
    Réponses: 6
    Dernier message: 24/01/2006, 15h26
  2. [PL/SQL][CURSEUR]invalid ROWID!!!
    Par thief dans le forum Oracle
    Réponses: 9
    Dernier message: 08/08/2005, 17h26
  3. Transact SQL - Curseurs
    Par fanch17 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2005, 18h31
  4. [PL/SQL) Curseur et nom de champ explicite
    Par Loko dans le forum Oracle
    Réponses: 6
    Dernier message: 01/12/2004, 16h07
  5. [PL/SQL] Curseur avec Paramètre
    Par blids dans le forum Oracle
    Réponses: 5
    Dernier message: 10/10/2004, 21h07

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