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 :

[ASE] Problème étrange avec une procédure stockée


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Par défaut [ASE] Problème étrange avec une procédure stockée
    Bonjour,

    Voici mon problème :
    j'ai une procédure stockée qui permet des mettre à jour un champ dans plusieurs tables.
    Mon problème est que pour certaines tables ça marche sans problème et pour d'autres seules quelques lignes sont traitées et aucune erreur n'est retournée.
    Si je relance la procédure pour ces tables, quelques lignes sont traitées en plus (par exemple, au premier passage, 2 lignes sont traitées, puis 5, puis 10... c'est complètement aléatoire), de sorte que si je lance la procédure assez de fois, toute la table est traitée.

    Est-ce que quelqu'un a déjà eu ce type de problème ? et si oui, d'où cela peut-il venir ?

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Est-ce que tu as vérifié la valeur du rowcount ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set rowcount 0
    go
    Michael

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Par défaut
    Merci, mais ça ne change rien...

    Une autre idée ?

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Billets dans le blog
    1
    Par défaut
    Peux tu nous synthétiser ta proc avec des noms parlant comme Table_A ... sans le vocabulaire métier de ton traitement ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Par défaut
    ok :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    CREATE PROCEDURE proc AS 
    BEGIN
    	DECLARE @res varchar(255)
    	,	@resultat varchar(255)
    	,	@id varchar(50)
     
    	-- Table1   ==> OK pour cette table
    	DECLARE curs CURSOR FOR SELECT id, nom FROM table1
     
    	OPEN curs
    	FETCH curs INTO @id, @res
     
    	WHILE @@SQLSTATUS = 0
    	BEGIN
    		EXEC gen_champ @res, @resultat OUTPUT	
    		UPDATE table1 SET champ = @resultat WHERE id = @id
    		FETCH curs INTO @id, @res
    	END
     
    	CLOSE curs
    	DEALLOCATE CURSOR curs
     
            -- ... d'autres tables... 
     
    	-- Table5 ==> NON OK
    	DECLARE curs CURSOR FOR SELECT id, nom FROM table5
     
    	OPEN curs
    	FETCH curs INTO @id, @res
     
    	WHILE @@SQLSTATUS = 0
    	BEGIN
    		EXEC gen_champ @res, @resultat OUTPUT
    		UPDATE table5 SET champ = @resultat WHERE id = @id
    		FETCH curs INTO @id, @res
    	END
     
    	CLOSE curs
    	DEALLOCATE CURSOR curs
     
    	-- Table6 ==> OK pour cette table
    	DECLARE curs CURSOR FOR SELECT id, nom FROM table6
     
    	OPEN curs
    	FETCH curs INTO @id, @res
     
    	WHILE @@SQLSTATUS = 0
    	BEGIN
    		EXEC gen_champ @res, @resultat OUTPUT		
    		UPDATE table6 SET champ = @resultat WHERE id = @id
    		FETCH curs INTO @id, @res
    	END
     
    	CLOSE curs
    	DEALLOCATE CURSOR curs
     
    	-- Table7 ==> NON OK
    	DECLARE curs CURSOR FOR SELECT nom FROM table7
     
    	OPEN curs
    	FETCH curs INTO @res
     
    	WHILE @@SQLSTATUS = 0
    	BEGIN
    		EXEC gen_champ @res, @resultat OUTPUT
    		UPDATE table7 SET champ = @resultat WHERE nom = @res
    		FETCH curs INTO @res
    	END
     
    	CLOSE curs
    	DEALLOCATE CURSOR curs
     
    	-- Table8 ==> OK pour cette table
    	DECLARE curs CURSOR FOR SELECT id, nom FROM table8
     
    	OPEN curs
    	FETCH curs INTO @id, @res
     
    	WHILE @@SQLSTATUS = 0
    	BEGIN
    		EXEC gen_champ @res, @resultat OUTPUT
    		UPDATE table8 SET champ = @resultat WHERE id = @id
    		FETCH curs INTO @id, @res
    	END
     
    	CLOSE curs
    	DEALLOCATE CURSOR curs
     
    	-- ... d'autres tables... 
     
    	RETURN 0
    END
    Même si je sors de ma proc les tables concernées (en créant d'autres procédures), j'ai le même problème pour ces tables...

    Merci

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Vérifie le code de la proc "gen_champs" - est-ce qu'elle a un "set rowcount" quelque part ?

    Michael

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par ysae17
    Bonjour,

    Voici mon problème :
    j'ai une procédure stockée qui permet des mettre à jour un champ dans plusieurs tables.
    Mon problème est que pour certaines tables ça marche sans problème et pour d'autres seules quelques lignes sont traitées et aucune erreur n'est retournée.
    Si je relance la procédure pour ces tables, quelques lignes sont traitées en plus (par exemple, au premier passage, 2 lignes sont traitées, puis 5, puis 10... c'est complètement aléatoire), de sorte que si je lance la procédure assez de fois, toute la table est traitée.

    Est-ce que quelqu'un a déjà eu ce type de problème ? et si oui, d'où cela peut-il venir ?

    Merci
    Pour utiliser un curseur sur une table celle ci doit :
    - soit avoir un clé
    - soit un schéma datarow

    Si vous ne respectez pas ces conditions vous obtenez des comportements aléatoire car le curseur n'a pas de moyens pour identifier les enregistrements de façon unique.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Par défaut
    Ca marche !

    Merci à tous pour votre aide.

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

Discussions similaires

  1. Petit problème avec une procédure stockée
    Par Poulain dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/05/2007, 18h58
  2. [VB.NET 2.0] - Problème avec une procédure stockée
    Par Khrysby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/05/2007, 15h25
  3. Réponses: 2
    Dernier message: 06/12/2006, 08h54
  4. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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