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

Langage SQL Discussion :

[Sybase] DECLARE CURSOR must be the only statement in a query batch.


Sujet :

Langage SQL

  1. #1
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut [Sybase] DECLARE CURSOR must be the only statement in a query batch.
    Bonjour à tous !


    Pourriez-vous m'expliquer l'erreur (sybase) suivante :

    DECLARE CURSOR must be the only statement in a query batch.
    qui survient avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	DECLARE faccur CURSOR for 
    		SELECT 
    			favor,
    			place_id,
    			service_id,
    			security_id,	
    			date,
    			legal_end_session
    		FROM temp_works..comm_data
    		WHERE facilitation = 1
    mais pas avec celui là (le tout est au milieu d'un script):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    GO
    	DECLARE faccur CURSOR for 
    		SELECT 
    			favor,
    			place_id,
    			service_id,
    			security_id,	
    			date,
    			legal_end_session
    		FROM temp_works..comm_data
    		WHERE facilitation = 1
    	GO

    Merci !





    Edit :



    En fait ce soucis vient d'un autre problème

    J'ai un script qui fonctionne très bien, mais je voudrais en faire une procédure.

    Je rajoute donc mon create proc au début et end à la fin, et il me détecte pleins d'erreurs de syntaxes que je ne vois pas .

    Il accepte ma procédure, quand j'enlève cette partie :

    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
    47
    48
    49
    50
    51
    52
    53
    	DECLARE faccur CURSOR for 
    		SELECT 
    			favor,
    			place_id,
    			service_id,
    			security_id,	
    			date,
    			legal_end_session
    		FROM temp_works..comm_data
    		WHERE facilitation = 1
    	GO
     
    	/* Pour chaque deal de facilitation, calcul des commissions (indirectes) entre date du deal + epsilon -> clôture */
    	DECLARE @third_id int,@place_id int, @service_id int, @security_id int, @date_deal datetime, @comm_indirect float, @legal_end_session datetime
     
    	OPEN faccur 
    	FETCH faccur INTO @third_id,@place_id,@service_id,@security_id,@date_deal,@legal_end_session
    	WHILE @@sqlstatus = 0
    	BEGIN
     
    		-- calcul des commissions sur le même titre, après @date_deal(de facilitation) jusqu'à la clôture	
    		SELECT 	
    			@comm_indirect = [...]
    		FROM  	
    			[...]
     
    		WHERE	[...]
     
    			AND b.favor       = @third_id
    			AND s.place_id    = @place_id
    			AND b.service_id  = @service_id
    			AND b.security_id = @security_id
     
     
    			-- on sauvegarde la comm indirecte calculée
    			UPDATE temp_works..comm_data
    			SET 
    				indirect_comm = ISNULL(@comm_indirect,0)
    			WHERE 
    				favor       = @third_id
    			AND place_id    = @place_id
    			AND date        = @date_deal
    			AND service_id  = @service_id
    			AND security_id = @security_id
    			AND legal_end_session = @legal_end_session
    			AND indirect_comm = -1 /* -1 : pas encore traité, NULL pour vide / erreur */
    			AND facilitation  = 1
     
    			FETCH faccur INTO @third_id,@place_id,@service_id,@security_id,@date_deal,@legal_end_session
    	END
     
    	CLOSE faccur
    	DEALLOCATE CURSOR faccur


    Vous voyez ce qui peut clocher ?


    Merci beaucoup

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    bon j'ai supprimé un "go" et ça fonctionne...

    désolé pour le dérangement

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2009, 20h11
  2. Probème avec Declare cursor
    Par SébasQc dans le forum AS/400
    Réponses: 5
    Dernier message: 17/04/2009, 23h31
  3. Réponses: 2
    Dernier message: 24/10/2007, 12h55
  4. [ASE 15.0.2][T-SQL] FETCH INTO ROWTYPE (declare cursor for select *)
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 26/09/2007, 16h05
  5. [DB2 V8] SQL0901N the SQL statement failed
    Par dngaya dans le forum DB2
    Réponses: 1
    Dernier message: 05/10/2006, 06h17

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