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

MS SQL Server Discussion :

curseurs : URGENT


Sujet :

MS SQL Server

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 31
    Par défaut curseurs : URGENT
    Voici mon modele :

    SPECTACLE
    (codespect,intitule,daterep,nbplacetot,nbplacerest,tarif,#codetype)
    TYP_SPECTACLE
    (codetype,libelle)
    ADHERENT
    (codadher,nomadher,adress,indicpaie)
    RESERVATION
    (dateres,nbplaces,#codespect,#codadher)

    Je dois créer un curseur (encore une fois j'ai pas tout compris...)
    _suppression des spectacles dont la date de représentation est passée (datrep dans SPECTACLE)

    pour l'instant j'ai écrit ca :

    declare supdatepass cursor for
    SELECT (*) /*j'suis pas sur que ce soit ca pout tout sélectionner*/
    FROM SPECTACLE

    /* j'ouvre le curseur */
    OPEN supdatepass

    /* charge la ligne suivante de la requête */
    FETCH NEXT FROM supdatepass

    /* tant que le FETCH a chargé une ligne */
    WHILE @@FETCH_STATUS = 0
    BEGIN

    /*c'est la que ca se complique : il faut que je fasse :*/
    /*si la date est passé je supprime la ligne*/

    FECTH_NEXT FROM supdatepass


    END
    CLOSE supdatepass
    DEALLOCATE supdatepass

    Merci pour votre aide
    ++

  2. #2
    Membre chevronné
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Par défaut
    Slt,

    Tu dois pouvoir te passer d'un curseur pour faire cela, une jointure et une restriction sur la date dans ta commande delete devrais largement suffire.


    Il faut juste supprimer les reservations avant le spectacle pour respecter l'integrite referentielle.

    a+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 31
    Par défaut I KNOW I KNOW
    Oui oui je sais bien mais le but de la manoeuvre et d'apprendre à créer des curseurs...

    Il y a surement de meilleurs exos mais bon...je dois faire ca!!

    héhé
    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 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Exemple type de curseur:

    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
     
    DECLARE CUR CURSOR  -- Declaration
    FOR SELECT MaColInt, MaColDate FROM MaTable WHERE maCol<1000
     
    DECLARE @i integer, @d datetime
     
    OPEN CUR       -- alocation en memoire
     
    FETCH CUR into @i, @d  -- copie de la 1e ligne dans les variables
     
    WHILE SQLSTATUS <> 2  -- bouclage tant que ligne dans curseur
    BEGIN
     
    -- Traitement
     
    FETCH CUR into @i, @d -- passage a la ligne suivante
    END
     
    CLOSE CUR 
    DEALLOCATE CURSOR CUR
    Ceci dit, tu peux gerer ton probleme sans passer par un curseur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    BEGIN TRAN
     
    DELETE RESERVATION 
    FROM SPECTACLE S, RESERVATION R
    WHERE S.#codespect = R.#codespect 
    AND S.daterep>getdate() 
     
    DELETE SPECTACLE 
    WHERE daterep>getdate() 
     
    COMMIT
    Si ton probleme, c'est les suppressions en cascade, tu peux le faire via trigger ou via jointures...
    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 averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 31
    Par défaut
    OK merci fadace...
    ++

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

Discussions similaires

  1. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  2. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54
  3. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 13h32

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