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

SQL Oracle Discussion :

[PL/SQL][Oracle8i]Acces aux elements d'un tableau dans une requete


Sujet :

SQL Oracle

  1. #1
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut [PL/SQL][Oracle8i]Acces aux elements d'un tableau dans une requete
    Bonjour,

    Voici mon problème, je souhaite faire un update à l'aide de valeurs récuperées dans un tableau.
    L'accès à ces valeurs dépend d'un champ de la table à mettre à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Table1
    SET Table1.Champ1 = v_tableau(Table1.Champ2)
    WHERE Table1.Champ2 BETWEEN 1 AND 30
    Et j'obtient l'erreur suivante à la compilation:
    PLS-00493: référence non valide à un objet ou à une fonction côté serveur dans un contexte local
    Ce que je comprends plus ou moins, la question est puis-je contourner cela et comment ? En sachant que je ne veut pas faire 30 requetes d'update.

    Merci d'avance.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    manifestement il nous manque une partie du code essentielle à la compréhension de la problèmatique

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    je suppose que c'est du PL, que le tableau est préparé en amont avec les données pour les valeurs 1-30

    Le premier moyen qui me vient à l'esprit : Du dynamique avec du decode
    Ce fera un gros decode mais ça passera très bien.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Ou écrire une fonction PL/SQL qui accède au tableau ?

  5. #5
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Merci pour vos réponses.

    Fred D> Que te manque-t-il comme information ? Comme l'a dit McM il s'agit d'une requete incluse dans du PL/SQL (cf TAG du sujet, il est vrai que j'aurais du le remettre), et v_tableau est un tableau au préalablement rempli.


    McM> Effectivement c'est une solution. Par contre niveau perf faire 30-decode imbriqués ça risque de ne pas être top non ?

    pifor> Peux-tu détailler, je ne vois pas bien comment cela va solutionner mon problème.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Tu peux créer un package, déclarer le tableau en variable locale du package, coder la fonction dans le package et remplacer dans la clause SET la référence au tableau par l'appel de la fonction qui se contentera d'accèder au tableau.

    Il y a forcément des restrictions sur le code qui peut être executé dans une fonction PL/SQL appelée dans du SQL: voir http://download-west.oracle.com/docs...10pck.htm#5980

  7. #7
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Effectivement ça marche (enfin ça compile), et en plus j'ai appris quelque chose (merci pour le lien, très instructif).

    Merci beaucoup.

    J'attends de finir mes tests pour mettre le tag résolu.


    Edit> Ca roxe ! --> Résolu
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

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

Discussions similaires

  1. Accès aux ressources d'un jar dans une webapp
    Par Altenide dans le forum Taglibs
    Réponses: 1
    Dernier message: 19/12/2012, 12h24
  2. [Vb6] Appel d'un Tableau dans une requete SQL
    Par Netzo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/07/2010, 09h57
  3. acces aux elements d un tableau a partir d un fils
    Par Flash_Over dans le forum Linux
    Réponses: 3
    Dernier message: 07/11/2007, 22h11
  4. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  5. Acces aux attributs d'un bean dans une jsp
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/06/2006, 10h32

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