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 :

regarder mon requet et aider moi


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut regarder mon requet et aider moi
    bonjour j ai rencontrer ce problem au niveau de l'integration service
    et le problem c'est que cette requet ca marche sur sql server
    declare @com varchar(113)
    declare @buffer int
    declare @buffercom varchar(1000)
    declare @var varchar(10)

    create table #table
    (val varchar(300))

    declare ved CURSOR FOR SELECT [value] from parfilux_param where rtrim(id) like 'BOOKYEAR%.PERLIB%'and value like 'rep%'
    open ved
    fetch NEXT from ved into @com
    WHILE @@FETCH_STATUS = 0
    BEGIN
    set @buffer = 1
    while @buffer < len(@com)
    begin
    set @var = (select substring(@com,@buffer,8))
    set @buffercom = @var + char(10)
    insert into #table (val) values (@buffercom)
    set @buffer = @buffer + 8
    end
    FETCH NEXT FROM ved into @com
    END
    CLOSE ved
    DEALLOCATE ved

    select *
    from #table
    drop table #table
    ######## »resultat de la requête
    value
    ----------------------------
    rep 2003
    jan 2003
    fev 2003
    rep2004
    jan 2004
    fev 2004
    -------------------
    Et ce que je demande moi c’est que d’avoir le meme resultat son utiliser les FETCH et les CURSOR parceque lorsque je mes cet requête à SSIS elle me donne cet erreur
    The Declare cursor SQL construct or statement is not supported.


    La requête principale est :
    SELECT [value] from parfilux_param where rtrim(id) like 'BOOKYEAR%.PERLIB%'and value like 'rep%'

    value
    -------------
    rep 2003jan 2003fev 2003
    rep 2004jan 2004fev 2004
    ---------------
    bien sur au lieu d’afficher comme cela elle doit être afficher comme le résultats précédente en plus c’est la dernier requête qui me reste

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Effectivement l'utilisation de curseurs est à bannir autant que c'est possible.
    Si vous êtes sous SQL Server 2005, vous pouvez faire ceci avec une CTE.

    Si j'ai bien compris, ça devrait s'approcher de :

    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
    WITH CTE_parfilux_param AS
    (
    	SELECT SUBSTRING(value, 1, 8) + CHAR(10) Val, 8 i
    	FROM dbo.parfilux_param
    	WHERE RTRIM(ID) LIKE 'BOOKYEAR%.PERLIB%'
    	AND value LIKE 'rep%'
    UNION ALL
    	SELECT SUBSTRING(value, i, i+8) + CHAR(10), i+8 i 
    	FROM dbo.parfilux_param
    	WHERE RTRIM(ID) LIKE 'BOOKYEAR%.PERLIB%'
    	AND i < LEN(value)
    	AND value LIKE 'rep%'
    )
    SELECT *
    FROM CTE_parfilux_param
    Sinon, pouvez-vous nous donner un jeu de données ?

    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/04/2008, 14h58
  2. aider moi dans mon script awk
    Par zcoul dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 17/01/2008, 22h03
  3. aider moi svp mon ordinateur plante
    Par nouri.moudhffar dans le forum Windows XP
    Réponses: 15
    Dernier message: 04/08/2006, 22h05

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