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

Outils BI Discussion :

[Procedures stockées]Probleme avec les dates


Sujet :

Outils BI

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 49
    Points
    49
    Par défaut [Procedures stockées]Probleme avec les dates
    Bonjour,


    Je souhaite réaliser une procédure stockée sous SAS Entreprise Guide (4.1).

    Voila le code de mon programme SAS de base à partir duquel je fais ma procédure stockée (il est volontairement très simple pour cerner le problème) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PROC SQL;
     
    select * from SASUSER.MATABLE where Periode_civile_mois between &date_deb_hist and &date_fin_hist ;
     
    QuIT;
    les 'date_deb_hist' et 'date_fin_hist' sont des macro variables de type "Date" renseignées au moment de l'exécution et que l'on retrouve dans le gestionnaire des macros variables.

    Ce code fonctionne correctement lorsque je s'exécute en programme SAS "normal".

    Cependant, lorsque je créer une procédure stockée à partir de ce code sous SAS Entreprise Guide (en faisant clic droit sur mon code --> Creer une application stockée), j'ai droit à un message d'informations disant :

    Le paramètre date_deb_hist est configuré de sorte à être mis entre guillemets, mais ceci n'est pas pris en charge par le modèle de paramètre de l'application stockée.

    Le paramètre date_fin_hist est configuré de sorte à être mis entre guillemets, mais ceci n'est pas pris en charge par le modèle de paramètre de l'application stockée.

    Donc premièrement, je ne comprends pas se message (je n'utilise aucun guillemets dans mon code...) ?

    Ensuite, lorsque je créer et lance quand même l'application stockée, générée à partir du programme précédent, mon code ne fonctionne plus, j'ai droit au message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    53         select * from SASUSER.MATABLE where Periode_civile_mois between &date_deb_hist and &date_fin_hist ;
    NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
    NOTE: Line generated by the macro variable "DATE_DEB_HIST".
    53          01Jan2007
                  _______
                  22
                  76
    ERROR 22-322: Syntax error, expecting one of the following: !!, *, **, +, -, /, AND, ||.  
     
    ERROR 76-322: Syntax error, statement will be ignored.

    Quel est donc le problème ???

    Merci d'avance pour toute réponse !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    salut

    Quel est donc le problème ???
    Le problème est que tu fournis une chaine au lieu d'une date SAS qui est numérique.

    Soit tu transforme les dates en date SAS par ce moyen :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    %let date_deb_hist = 01Jan2007 ;
    %let date_fin_hist = 01Jan2008 ;
    
    proc sql feedback;
       select * 
       from WORK.MATABLE 
       where PERIODE_CIVILE_MOIS between "&date_deb_hist"d and "&date_fin_hist"d
       ; 
    quit;
    La chaine doit être de cette manière : "DDMONYYYY"d, soit Le Jour sur 2, Les trois permeires lettres du nom du mois en anglais, puis la date. (01JAN2007 est donc OK)

    Ou bien (mon préféré) tu transforme les dates via un informat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    %let date_deb_hist = %sysfunc(inputn(&date_deb_hist, date9.)) ;
    %let date_fin_hist = %sysfunc(inputn(&date_fin_hist, date9.)) ;
     
    proc sql feedback;
       select * 
       from WORK.MATABLE 
       where PERIODE_CIVILE_MOIS between &date_deb_hist and &date_fin_hist
       ; 
    quit;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Merci pour l'aide ! J'ai compris, ça fonctionne...

    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec les dates
    Par guitariste dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/07/2007, 11h03
  2. [EJBQL] [EJB2] probleme avec les dates
    Par amine1980 dans le forum Java EE
    Réponses: 2
    Dernier message: 16/02/2007, 17h09
  3. [SQL Server 2000]Probleme avec les dates !
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2006, 15h58
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. Grop probleme avec les date
    Par stinger000 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/04/2006, 13h49

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