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 :

[Oracle] DLM + table imbriquée


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 34
    Points
    34
    Par défaut [Oracle] DLM + table imbriquée
    hello

    J'ai un probleme pour mettre à jour une table imbriquée dans Oracle.
    Voici comme sont construites les tables:

    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
    //le type salaire
    CREATE TYPE TSalaire AS OBJECT
    (
    	mois NUMBER(2),
    	montant NUMBER(6)
    )
     
    //le type liste de salaire
    CREATE TYPE LTSalaire AS VARRAY(12) OF TSalaire ;
     
    //le type employe
    CREATE TYPE TEmploye AS[cpp] OBJECT
    (
    	id_emp NUMBER(5),
    	nom_emp VARCHAR2(50),
    	prenom_emp VARCHAR2(50),
    	code_emp VARCHAR2(10),
    	date_nais DATE,
    	lieu_nais VARCHAR2(50),
    	adresse VARCHAR2(255),
    	num_tel NUMBER(20),
    	salaire LTSalaire
    )
    Le but est de mettre a jour le salaire pour un mois donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TABLE ( SELECT employe.salaire  FROM employe WHERE employe.id_emp = 2) TS SET montant = 2  WHERE mois = 5
    L'erreur : ( l'étoile doit se trouver sous le 'm' de "SET montant" )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE TABLE ( SELECT employe.salaire  FROM employe WHERE employe.id_emp = 22) TS SET montant = 1000
                                                                                          *
    ERREUR à la ligne 1 :
    ORA-25015: impossible d'effectuer un DML sur cette colonne de vue de table
    imbriquée
    [/code]

  2. #2
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    C'est ecrit en rouge :p

    It is not possible to update one element of a VARRAY collection with SQL.

    You cannot use the TABLE keyword for this purpose (because Varrays are not stored in particular table like Nested tables).

    So, a single VARRAY element of a collection must be updated within a PL/SQL block:
    Bon je vais mettre un nested table pour simplifier tous ca

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/01/2005, 16h13
  2. Réponses: 19
    Dernier message: 23/12/2004, 12h01
  3. Accéder au contenu d'une table imbriquée
    Par scott_tiger dans le forum Oracle
    Réponses: 18
    Dernier message: 22/12/2004, 21h01
  4. [ORACLE 9i] Tables externes
    Par sygale dans le forum Oracle
    Réponses: 3
    Dernier message: 22/12/2004, 15h24
  5. [ORACLE 9i] tables externes et Skip column
    Par sygale dans le forum SQL
    Réponses: 7
    Dernier message: 17/11/2004, 05h13

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