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 :

variable dans clause from


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut variable dans clause from
    bonjour,
    je voudrais avoir un resultat d'un count dans une variable, mais a partir d'une requete qui contient deja une variable sur la clause from.

    et ca ne fonctionne pas

    declare @matable
    declare @resultat

    set @matable = 'select nom from listetable where nom = cettetable'

    set @resultat = 'select count(*) from ' + @matable

    qui aurait une idée ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    declare @matable
    declare @resultat
    declare @str
     
    set @matable = 'select nom from listetable where nom = cettetable'
     
    set @str = 'select 1 from ' + @matable
    exec(@str)
    set @resultat=@@rowcount

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    merci mais je ne comprends pas ou est passé mon count(*) qui me donne ne nb de resultat de ma requete ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    SET @str = 'select 1 from ' + @matable
    exec(@str)
    SET @resultat=@@rowcount
    en fait:
    l'execution du select 1 from table va te renvoyer 1 pour chaque enregistrement, c'est a dire count(*) fois 1

    @@rowcount est une variable sys de sqlserveur qui te retourne le nombre lignes affectées par l'instruction précédente, soit ici count(*) lignes

    ex:
    suppose que ta table a 3 lignes

    select 1 from table
    va retourner
    1
    1
    1

    soit 3 lignes de 1

    ton @@rowcount contiendra 3 (lignes)
    qui est équivalent au count(*)

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    merci c genial

    mais si je l'utilise à la suite plusieurs fois il ne va pas y avoir de confusion dans cette variable système ?
    c à dire me recuperer un rowcount de la requete precedente ?

    ou tout est executé dans un context séparé

  6. #6
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    @@rowcount est une variable sys de sqlserveur qui te retourne le nombre lignes affectées par l'instruction précédente
    suppose dans le même exemple que tout a l'heure
    SET @str = 'select 1 from ' + @matable
    exec(@str)
    SET @resultat=@@rowcount
    tu rajoute un print

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET @str = 'select 1 from ' + @matable
    exec(@str)
    print 'toto'
    SET @resultat=@@rowcount
    eh bien @@rowcount = ........................ 1
    car c'est le nombre de lignes affectées par le PRINT et pas le exec

    en résumé

    @@rowcount est une variable sys de sqlserveur qui te retourne le nombre lignes affectées par l'instruction IMMEDIATEMENT PRECEDENTE

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci Beaucoup

Discussions similaires

  1. Explication requète dans clause from
    Par fbms18 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/03/2015, 12h46
  2. Variable dans le FROM ou FROM composé , FROM ajustable
    Par V i n c e n t dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/05/2014, 18h02
  3. Cuseur et variable dans le FROM
    Par Raphael1980 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/07/2011, 15h24
  4. procédure avec variable dans le from
    Par cedlensois dans le forum Développement
    Réponses: 2
    Dernier message: 24/03/2009, 09h50
  5. Procédure stockée avec variable en clause FROM
    Par Richard MORRISSEY dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/11/2006, 16h00

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