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

Développement SQL Server Discussion :

Syntaxe update équivalenté à ce curseur ?


Sujet :

Développement SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut Syntaxe update équivalenté à ce curseur ?
    Bonjour,
    Est-ce que vous pouvez me confirmer que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    update CurrencyPair
    set Rate = (1/err1.Rate) * err2.Rate
    from ExchangeRateReadable err1, ExchangeRateReadable err2, CurrencyPair cp
    where err1.Month = cp.Month
      and err1.Year = cp.Year
      and err1.BaseCcy = 'GBP'
      and err1.QuotedCcy = cp.Ccy1
      and err1.Rate is not null
      and err1.Rate != 0
      and err2.Month = cp.Month
      and err2.Year = cp.Year
      and err2.BaseCcy = 'GBP'
      and err2.QuotedCcy = cp.Ccy2
    équivaut à:
    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
    declare @ccy1 int, @ccy2 int, @month int, @year int
    declare curs2 cursor
    for select cp.Ccy1, cp.Ccy2, cp.month, cp.year
    	from CurrencyPair cp
    open curs2
    fetch from curs2 into @ccy1, @ccy2, @month, @year
    while @@fetch_status = 0
    begin
    	update CurrencyPair
    	set Rate = (1/err1.Rate) * err2.Rate
    	from ExchangeRateReadable err1, ExchangeRateReadable err2
    	where err1.Month = @month
    	  and err1.Year = @year
    	  and err1.BaseCcy = 'GBP'
    	  and err1.QuotedCcy = @ccy1
    	  and err1.Rate is not null
    	  and err1.Rate != 0
    	  and err2.Month = @month
    	  and err2.Year = @year
    	  and err2.BaseCcy = 'GBP'
    	  and err2.QuotedCcy = @ccy2
     
    	fetch from curs2 into @ccy1, @ccy2, @month, @year
    end
    close curs2
    deallocate curs2

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    Y aurait-il une âme charitable pour me confirmer cela s'il vous plaît?

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Oui ça m'a l'air correct.
    J'aurai légèrement revu la syntaxe et écrit ainsi, mais ça ne change rien à la finalité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE cp
       SET cp.Rate = (1 / err1.Rate) * err2.Rate
      FROM CurrencyPair         as cp
      JOIN ExchangeRateReadable as err1 ON err1.Month = cp.Month AND err1.Year = cp.Year AND err1.QuotedCcy = cp.Ccy1
      JOIN ExchangeRateReadable as err2 ON err2.Month = cp.Month AND err2.Year = cp.Year AND err2.QuotedCcy = cp.Ccy2
     WHERE err1.BaseCcy = 'GBP'
       AND err1.Rate <> 0
       AND err2.BaseCcy = 'GBP';

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/12/2010, 14h25
  2. Réponses: 7
    Dernier message: 06/09/2006, 15h18
  3. Syntaxe Update : erreur
    Par Mariboo dans le forum Access
    Réponses: 6
    Dernier message: 09/06/2006, 18h46
  4. [ORACLE] problème de syntaxe UPDATE
    Par magic charly dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/05/2006, 12h26
  5. syntaxe "UPDATE" (lecture d'une valeur avec jointu
    Par mrblue1978 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/01/2006, 14h38

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