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

Sybase Discussion :

[TSQL][ASE]debutant procedure stocké


Sujet :

Sybase

  1. #1
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut [TSQL][ASE]debutant procedure stocké
    bonjour je suis débutant en procedure stocké... je travail avec une base sybase
    pour commencer je chercher a réaliser une procedure simple qui prend en parametre des dates (date de debut et date de fin) et une frequence et dans une boucle while d'afficher toutes les dates qui sont entre date de debut et date de fin à la bonne frequence.
    voici mon code :
    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
     
    create procedure proc_test
    (
    	@DATE_DEBUT		datetime,
    	@DATE_FIN		datetime,
    	@COD_FREQ		varchar(4)
    )
    as
    begin
    declare	@DATE_EVT	datetime
    select @DATE_EVT=@DATE_FIN
     
    	while (datediff(day,@DATE_EVT,@DATE_FIN) <> 0)
    	begin
    		set @DATE_EVT = dateadd(@COD_FREQ, 1, @DATE_EVT)
    		print 'date evt : ' + @DATE_EVT
    	end
    end
    la procedure ne passe pas...
    Mon probleme ensuite sera d'appeler cette procedure... comment faire
    Mon idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    execute proc_test @DATE_DEBUT=(select date_debut from table where id=1),
    @DATE_FIN=(select date_fin from table where id=1),
    @COD_FREQ=(select cod_freq from table where id=1)
    Bon, je suis conscient d'etre vraiment débutant, alors n'hesité pas a m'insulter sur le code


    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 220
    Points : 19 549
    Points
    19 549
    Billets dans le blog
    25
    Par défaut
    Sans me pencher sur la logique ... ca semble venir de MS-SQL...

    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
    create procedure proc_test
    (
    	@DATE_DEBUT		datetime,
    	@DATE_FIN		datetime,
    	@COD_FREQ		varchar(4)
    )
    as
    begin
    declare	@DATE_EVT	datetime
    declare	@DATE_EVT_V	varchar(30)
     
     
    select @DATE_EVT=@DATE_FIN
     
    	while (datediff(day,@DATE_EVT,@DATE_FIN) <> 0)
    	begin
    		select @DATE_EVT = dateadd(@COD_FREQ, 1, @DATE_EVT)
    		select @DATE_EVT_V = 'date evt : ' + convert(varchar(30),  @DATE_EVT, 114)
     
    		print @DATE_EVT_V
    	end
    end
    Puis l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare @DD, @DF datetime
     
    select @DD = date_debut, 
           @DF = date_fin ,
           @CF = code_freq
    from table where id=1
     
    exec proc_test @DATE_DEBUT=@DD, @DATE_FIN=@DF, @COD_FREQ=@CF
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    merci pour ta réponse.
    Mais quand j'execute la creation de la procedure, le requeteur me retourne
    <eb1>Errors occurred.</eb1>
    et que veux tu dire par "ca semble venir de MS-SQL..."

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 220
    Points : 19 549
    Points
    19 549
    Billets dans le blog
    25
    Par défaut
    Quelle version ?
    Que vous retourne

    MS-SQL car il y avait des SET, bien spécifiques à un portage de MS-SQL à Sybase.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    je travail avec la version :
    Adaptive Server Enterprise/12.0.0.8/P/EBF 11874 ESD2/Sun_svr4/OS 5.7/2058/64bit/FBO/Thu May 20 09:12:03 2004

  6. #6
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    j'ai fais une nouvelle procédure qui me retourne la même erreur :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    create procedure syn_insert_cap_evt
    (
    	@DATE_DEBUT		datetime,
    	@DATE_FIN		datetime,
    	@COD_FREQ		varchar(4)
    )
    as
    begin
    declare	@DATE_EVT	datetime
    declare	@DATE_EVT_V	varchar(30)
     
    select @DATE_EVT=@DATE_DEBUT
     
    		if @COD_FREQ = 'TRIM'
    			begin
    				while datediff(trim,@DATE_EVT,@DATE_FIN) > 0
    					begin
    						print 'trim'
    						select dateadd(qq,1,@DATE_EVT)
    					end
    			end
     
    		if @COD_FREQ = 'YEAR'
    			begin
    				while datediff(trim,@DATE_EVT,@DATE_FIN) > 0
    					begin
    						print 'year'
    						select dateadd(yy,1,@DATE_EVT)
    					end
    			end
     
    		if @COD_FREQ = 'DAY'
    			begin
    				while datediff(trim,@DATE_EVT,@DATE_FIN) > 0
    					begin
    						print 'day'
    						select dateadd(day,1,@DATE_EVT)
    					end
    			end
    end
    Je pense aussi que le problème vient de l'affectation de la nouvelle valeur de @DATE_EVT.
    Avec ce nouveau code, j'ai cependant le meme probleme :
    <eb1>Errors occurred.</eb1>
    Merci

  7. #7
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    ok, j'ai reussi a resoudre mon problème, voici un code qui fonctionne :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    create procedure syn_insert_cap_evt
    (
    	@DATE_DEBUT		datetime,
    	@DATE_FIN		datetime,
    	@COD_FREQ		varchar(4)
    )
    as
    begin
    declare	@DATE_EVT	datetime
    declare	@DATE_EVT_V	varchar(30)
     
    set nocount on
     
    select @DATE_EVT=@DATE_DEBUT
     
    		if @COD_FREQ = 'YEAR'
    			begin
    				while @DATE_FIN > @DATE_EVT
    					begin
    						select @DATE_EVT_V=convert(varchar(8),@DATE_EVT,112)
    						select @DATE_EVT = dateadd(yy,1,@DATE_EVT)
    						print @DATE_EVT_V
    					end
    			end
     
    		if @COD_FREQ = 'TRIM'
    			begin
    				while @DATE_FIN > @DATE_EVT
    					begin
    						select @DATE_EVT_V=convert(varchar(8),@DATE_EVT,112)
    						select @DATE_EVT = dateadd(qq,1,@DATE_EVT)
    						print @DATE_EVT_V
    					end
    			end
     
    		if @COD_FREQ = 'DAY'
    			begin
    				while @DATE_FIN > @DATE_EVT
    					begin
    						select @DATE_EVT_V=convert(varchar(8),@DATE_EVT,112)
    						select @DATE_EVT = dateadd(day,1,@DATE_EVT)
    						print @DATE_EVT_V
    					end
    			end
    end
    Merci

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

Discussions similaires

  1. [DEBUTANT] Procedure stockée
    Par erigoal dans le forum PL/SQL
    Réponses: 7
    Dernier message: 26/05/2009, 18h13
  2. [debutant][ASE 12.5]print dans procedure stockée
    Par sly33 dans le forum Sybase
    Réponses: 6
    Dernier message: 21/05/2007, 18h41
  3. debutant procedure stockée
    Par nawal106 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 23/10/2006, 11h06
  4. [DEBUTANT]Procedure stocké
    Par FreshVic dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 12/07/2004, 13h41
  5. [Debutant][SQL] Execution de procedures stockées
    Par Yannos94 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 19h09

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