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

PL/SQL Oracle Discussion :

Utilisation du package DBMS_SQL avec des collections


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 60
    Par défaut Utilisation du package DBMS_SQL avec des collections
    Bonjour,

    dans le cadre de rédaction de procédures PL/SQL, j'utilise le package DBMS_SQL, et plus particulièrement la procédure DEFINE_COLUMN. Tant que j'utilise cette fonction avec des types standard, je n'ai pas de problèmes.

    J'ai créé une variable de type tableau de records, dans laquelle je voudrais insérer progressivement mes données. Or, lors de l'appel à DEFINE_COLUMN, si je donne en variable un élément de record, ca ne fonctionne pas. Ci joint un peu de code, pour une meilleure compréhension :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    type MON_REC is RECORD(
      col1  varchar2(8),
      col2  varchar2(1));
     
    type TAB_MON_REC is table of MON_REC index by binary integer;
     
    t_tableau TAB_MON_REC;
     
    BEGIN
    [...]
        DBMS_SQL.DEFINE_COLUMN(v_cursor, 1, t_tableau(1).col1, 8);

    j'ai effectué plusieurs recherches sur différents forums, mais je ne trouve guère d'exemples détaillés d'utilisation du package. J'ai donc tenté différentes syntaxes à l'aveugle (chose que je n'aime pas franchement, d'ailleurs), mais aucune ne fonctionne:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        DBMS_SQL.DEFINE_COLUMN(v_cursor, 1, t_tableau.col1, 8);
        DBMS_SQL.DEFINE_COLUMN(v_cursor, 1, t_tableau(v_cpt).col1, 8);

    A partir de la, deux solutions:
    - soit une syntaxe correcte existe, et par manque d'expérience, ou par défaut d'interprétation, je ne la connais pas
    - soit aucune syntaxe n'existe car une contrainte empêche cette affectation à un type tableau, et je passe par autant de variables temporaires que de "colonnes" dans mon type record.

    En vous remerciant par avance

    cordialement,

  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
    Les records sont propres au PL/SQL et ne sont pas reconnus par le moteur SQL. Voyez plutôt du coté des objets, qui, eux, peuvent être stockés dans la base.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 60
    Par défaut
    Merci beaucoup, je vais creuser de ce côté là.

    Cordialement,

    [EDIT] en fait, je vais dans un premier temps utiliser des variables temporaires qui alimenteront le record, pour aller au plus pressé, et lorsque la pre-release sera validée, je regarderai comment on gère les objets[/EDIT]

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/02/2008, 11h07
  2. Réponses: 1
    Dernier message: 11/05/2007, 19h36
  3. Réponses: 2
    Dernier message: 02/04/2007, 11h53
  4. Réponses: 27
    Dernier message: 25/10/2006, 12h10
  5. utilisation d'un CopyFile avec des edits.??
    Par EssaiEncore dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2005, 16h32

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