Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2882 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MS SQL] Problème avec Procédures stockées & Curseur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MS SQL] Problème avec Procédures stockées & Curseur

n°1127141
le_duc
PlaTyPuS
Posté le 22-06-2005 à 10:56:28  profilanswer
 

:hello:  
 
Voilà j'arrive pas a utiliser un curseur directement dans une procédure stockée... (en fait je sais meme pas si c'est possible)
 
Voilà mon code :
 

Code :
  1. CREATE PROCEDURE dbo.P_InterdictionTitulaire
  2. @idTitulaire int,
  3. @I_idTypeOpposition int,
  4. @I_commentaireOpposition varchar(200)
  5. AS
  6. -- Création du curseur qui nous permettra de passer toutes les cartes du titulaire en revue
  7. DECLARE C_CartesTitulaire CURSOR
  8. FOR SELECT noInterne FROM CARTE WHERE idTitulaire = @idTitulaire
  9. DECLARE @noInterneCarte int
  10. -- Si le champ interdicition est à 0, on procède à l'interdiction,
  11. -- sinon le titulaire est déjà en interdiction!
  12. IF ((SELECT interdiction FROM TITULAIRE WHERE idTitulaire = @idTitulaire) = 0)
  13. BEGIN
  14.  -- On ouvre le curseur
  15.  OPEN C_CartesTitulaire
  16.  -- Tant qu'il y a des résultats, on lance l'opposition sur les cartes
  17.  WHILE @@FETCH_STATUS = 0
  18.   BEGIN
  19.    FETCH NEXT FROM C_CartesTitulaire INTO @noInterneCarte
  20.    -- On fait appel à la PS d'opposition d'une carte
  21.    EXEC dbo.P_OppositionCarte
  22.     @noInterne = @noInterneCarte,
  23.     @idTypeOpposition = @I_idTypeOpposition,
  24.     @commentaireOpposition = @I_commentaireOpposition
  25.   END
  26.  -- Fermeture du curseur et désallocation
  27.  CLOSE C_CartesTitulaire
  28.  DEALLOCATE C_CartesTitulaire
  29.  -- Mise à jour du titulaire (interdit = TRUE (1), date début d'interdiction et date fin!)
  30.  UPDATE TITULAIRE
  31.   SET interdiction = 1,
  32.       dateDebutInterdiction = GETDATE(),
  33.       dateFinInterdiction = NULL
  34.   -- date de fin à NULL, car on ne sait pas encore quand l'interdiction prendra fin!
  35.   WHERE idTitulaire = @idTitulaire
  36. END
  37. ELSE
  38. BEGIN
  39.  RAISERROR ('Le titulaire est déjà en interdiction!', 16, 1)
  40.  RETURN
  41. END
  42. go


 
Ce que je veux faire, c'est que pour chaque carte du titulaire, lancer la procédure dbo.P_OppositionCarte. Mais à chaque fois il me dit soit "Cursor already exist" ou "Cursor does not exist"...
 
Création du curseur: ligne 8
Ouverture du curseur: ligne 17
 
Help plizzz
 
++


Message édité par le_duc le 22-06-2005 à 19:02:26
mood
Publicité
Posté le 22-06-2005 à 10:56:28  profilanswer
 

n°1127245
le_duc
PlaTyPuS
Posté le 22-06-2005 à 11:58:11  profilanswer
 

ptit up...

n°1127352
le_duc
PlaTyPuS
Posté le 22-06-2005 à 13:59:39  profilanswer
 

un reup. personne?

n°1127623
pouyotte
Posté le 22-06-2005 à 16:41:51  profilanswer
 

Tu nous parles de la proc P_OppositionCarte mais le code correspond à P_InterdictionTitulaire...
 
Est-ce normal?

n°1127700
le_duc
PlaTyPuS
Posté le 22-06-2005 à 17:21:09  profilanswer
 

pouyotte a écrit :

Tu nous parles de la proc P_OppositionCarte mais le code correspond à P_InterdictionTitulaire...
 
Est-ce normal?


 
Salut!
 
oui, c'est normal, car ma procédure P_OppositionCarte fonctionne très bien! C'est bien l'appel en boucle qui ne fonctionne pas...
 
 :cry:

n°1127749
le_duc
PlaTyPuS
Posté le 22-06-2005 à 18:46:43  profilanswer
 

up

n°1128180
pouyotte
Posté le 23-06-2005 à 08:18:04  profilanswer
 

autant pour moi, j'ai du sauter la ligne. Je cherche...

n°1131652
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-06-2005 à 22:59:07  profilanswer
 

Faut faire un premier "fetch next" avant d'entrer dans la boucle (avant le WHILE @@FETCH_STATUS = 0), parceque sinon, ben... Le @@FETCH_STATUS il est pas initialisé ;)

n°1131655
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-06-2005 à 22:59:56  profilanswer
 

PS: et le FETCH NEXT, doit être la dernière instruction de ta boucle, sinon ça va déconner ton bignou. Regarde bien l'exemple de l'aide.

n°1132766
le_duc
PlaTyPuS
Posté le 27-06-2005 à 19:42:40  profilanswer
 

yop yop!
 
Merci j'avais trouvé en fait ;) ... mais je me suis fait chier un moment avant de me rendre compte que je devais avancer le curseur avant d'entrer dans la boucle :S
 
Merci quand meme! @++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MS SQL] Problème avec Procédures stockées & Curseur

 

Sujets relatifs
un probleme de recherche qui parait pourtant simple....Problème de login
probleme alignement!Problème pour transformer des iframes en style CSS ?
Probleme VbSCRIPT evolué / HTMLProblème Incongru VbScript / HTML
Comment "ranger" une base SQL ?problème avec select multiple
Probleme d'image éspacéesIMAP et probleme Recent Unseen
Plus de sujets relatifs à : [MS SQL] Problème avec Procédures stockées & Curseur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR