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 :

Recupérer résultat dynamique


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut Recupérer résultat dynamique
    Bonjour j'ai une requete dynamique dont je voudrais recupérer le resultat mais je ne sais pas comment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    WHILE @i < 15
    SET @QUERY = (SELECT TOTO FROM TABLE WHERE id = ' + CAST(@i as varchar(10))
    EXEC @QUERY
    SET @Recup = .....
    dans @Recup, je voudrais recuperer le resultat de ma requete, comment faire ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Utilise un curseur. Voici un exemple d'utilisation d'un curseur pour défragmenter tous les index d'une base (par exemple) :

    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
    /*
    Defrag or re-index all index with origin fillfactor
    */
     
    DECLARE @TableName sysname
    DECLARE @IndexName VARCHAR(100)
    DECLARE @indid int
    DECLARE cur_tblfetch CURSOR FOR
    SELECT name from sysobjects where xtype='U'
     
    OPEN cur_tblfetch
    	FETCH NEXT FROM cur_tblfetch INTO @TableName
    	WHILE @@FETCH_STATUS = 0
    	BEGIN 
    		DECLARE cur_indfetch CURSOR FOR
    		SELECT indid,name FROM sysindexes WHERE id = OBJECT_ID (@TableName) and keycnt > 0 
    		OPEN cur_indfetch
    			FETCH NEXT FROM cur_indfetch INTO @indid,@IndexName
    			WHILE @@FETCH_STATUS = 0
    				BEGIN 
    				  print 'Maintenance de ' + (@TableName) + '.' + (@IndexName)
    				  IF @indid <> 255 DBCC INDEXDEFRAG (0, @TableName, @indid)
    				  FETCH NEXT FROM cur_indfetch INTO @indid,@IndexName
    				END
    		CLOSE cur_indfetch
    		DEALLOCATE cur_indfetch
    		FETCH NEXT FROM cur_tblfetch INTO @TableName
    	END
    CLOSE cur_tblfetch
    DEALLOCATE cur_tblfetch

  3. #3
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    rholalala, ma prod est dejà longue à executer, merci mais pas de curseur !!!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Alors passe par un autre langage, genre perl. La récupération et le traitement du résultat se fera par perl (ou autre) et non SQL. A moins que tu ne veuilles que le traitement via SQL.

  5. #5
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    je veux rester sur SQL,

    d'habitude c simple de recuperer une valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @Recup = (SELECT TOTO FROM TABLE WHERE id = 4)
    mais là ma requete est dynamique, y'a bien un moyen de faire

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Par défaut
    salut
    essai ca
    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
     
    create proc xxxx as 
    begin
      create table #tt( AA Int )
      declare @qry nvarchar(4000), @i int, @k int
      set @i = 1
      while ( @i < 10 ) begin
        set @qry = N'select ' + Cast( @i as nvarchar ) + ' As F'
        insert #tt exec( @qry )
        select @k = aa from #tt
        select aa from #tt -- Pour retourner le result de la requete
        truncate table #tt
        set @i = @i + 1
      end
    end

Discussions similaires

  1. Recherche de documents et résultats dynamiques
    Par bidulee dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 02/06/2009, 17h00
  2. Nombre de champs résultat dynamique
    Par mhamedbj dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/05/2008, 11h40
  3. Résultat dynamique d'un calcul
    Par nineosoe dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/06/2007, 15h42
  4. recupérer résultat d'une page HTML en flash
    Par Jérémy Lefevre dans le forum Dynamique
    Réponses: 1
    Dernier message: 16/01/2007, 12h30
  5. Réponses: 3
    Dernier message: 06/03/2006, 11h34

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