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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    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 émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    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
    Membre averti
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    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 émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    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
    Membre averti
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    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 émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    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

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