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 :

Variable dans un cursor


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Variable dans un cursor
    Bonjour,

    Je recherche une petite aide pour éclaircir un comportement que je ne comprend pas !

    J'ai une procédure stockée qui comporte un cursor lui mème composé d'une requête importante avec 4 UNION et des variables nommées date1 et date2 pour effectuer un between.

    La valeur des variable est déterminé avant le cursor avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set @date1 = convert(varchar,getdate()-@nbJour,103) + ' 00:00:00'
    set @date2 = convert(varchar,getdate()-@nbJour,103) + ' 23:59:59'
    Quand j'utilise l'instruction convert(varchar,getdate()-@nbJour,103) + ' 00:00:00' directement dans le between le temps d'execution de la ps reste correct moin de 1min ! Cependant quand j'utilise a la place les variables date1 et date 2 le temps d'exécution est de plus de 10 min.

    Je ne comprend pas cette différence. Le between est utilisé dans chaque requête des UNION et les variables sont bien de type datetime.

    Une petite idée sur cette différence ?

    Merci beaucoup

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 769
    Points : 52 722
    Points
    52 722
    Billets dans le blog
    5
    Par défaut
    Votre BETWEEN est de toute façon complétement faux car pour le type DATETIME, comme la précision est de 3 milliseconde, ' 23:59:59' c'est déjà le lendemain 0h.
    Regardez ce que nous avons écrit à ce sujet : http://baptiste-wicht.developpez.com...-sql/datetime/

    Postez le code COMPLET de votre procédure.


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Cursor et variable dans le select
    Par rodbeck dans le forum Développement
    Réponses: 0
    Dernier message: 27/04/2010, 13h59
  2. [LG]variables dans procédure
    Par néo333 dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2003, 23h24
  3. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40
  4. Réponses: 13
    Dernier message: 14/06/2003, 22h15
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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