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

Oracle Discussion :

pb trigger avec nested table


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Par défaut pb trigger avec nested table
    J'explique : j'ai une table Commandes composée de différents attributs et d'une collection d'objets (medicaments).

    Lorsque que l'on ajoute une commande, je dois mettre a jour le stock dans la table Medics pour chaque medicaments de la collection.
    Si le stock du medicament est insuffisant je le signal et je continue avec les medicaments suivant.

    J'utilise donc un curseur sur ma nested table :NEW.lgnscom
    (je ne suis vraiment pas sur de ca)
    et pour chaque ligne je verifie que le stock de medicaments est suffisant (pour l'instant)

    J'arrive pas a m'en sortir c prise de tete si quelqu'un de caler en trigger pouvait me donner un coup de pouce ca serait vraiment sympas...

    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
     
    CREATE OR REPLACE TRIGGER TrigCommande
     BEFORE INSERT
     ON Commandes
     FOR EACH ROW
     
     Declare
       TYPE Recordligne IS RECORD
       (
         idmed CHAR(13),
         qte INTEGER
       );
       ligne Recordligne;
       CURSOR c IS
       SELECT * from THE(:NEW.lgnscom);
     
     Begin
       Open c;
       Loop fetch c into ligne;
         If (Select stocks from Medics where idmed = ligne.idmed) < ligne.qte)        Then
           RAISE_APPLICATION_ERROR ( -20010, 'Pb stocks' ) ;
         End If;
       End Loop;
     End;  
     /
    Contexte

    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
     
    CREATE OR REPLACE TYPE t_lgncom IS OBJECT (idmed CHAR(13), qte INTEGER);
    CREATE OR REPLACE TYPE col_t_lgncom IS TABLE OF t_lgncom;
     
    CREATE TABLE Commandes
    (
    	idcom CHAR(13) NOT NULL,
    	idpharma CHAR(13),
    	datecom DATE,
    	lgnscom col_t_lgncom,
    	remisecom NUMBER,
    	CONSTRAINT pkCommandes PRIMARY KEY (idcom),
    	CONSTRAINT fkCommandes FOREIGN KEY (idpharma) REFERENCES Pharmas(idpharma)
    )
    NESTED TABLE lgnscom STORE AS table_lgnscom, 
    TABLESPACE MEDIC STORAGE (INITIAL 200k NEXT 100k MAXEXTENTS 2);

    Erreurs pour TRIGGER TRIGCOMMANDE:
    LINE/COL ERROR
    --------------------------------------------------------------------------------
    9/18 PLS-00103: Symbole "" rencontré à la place d'un des symboles suivants :[/code]

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Voici la syntaxe pour compter le nombre de lignes d'une collection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select COUNT(*) from TABLE( SELECT nom_collection FROM nom_table WHERE colonne_collection = ... )
    la sous-requête doit ramener une et une seule collection

    http://sheikyerbouti.developpez.com/...ollections.htm

Discussions similaires

  1. Trigger sur Nested Table [Débutant]
    Par Walmas dans le forum PL/SQL
    Réponses: 0
    Dernier message: 18/05/2011, 02h12
  2. Requête SQL avec nested tables
    Par JLemon dans le forum PL/SQL
    Réponses: 4
    Dernier message: 16/12/2010, 10h56
  3. Trigger avec update sur même table
    Par Thig dans le forum PL/SQL
    Réponses: 7
    Dernier message: 31/08/2007, 14h45
  4. Problème d'index avec les nested tables
    Par zeinoul1 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 26/10/2006, 12h28
  5. créer TRIGGER sur 1 table avec liaison sur 2 autre table
    Par shaka84 dans le forum Développement
    Réponses: 2
    Dernier message: 11/04/2006, 11h10

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