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 :

ROWTYPE en PL/SQL impossible à créer sous SqlDeveloper [11g]


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 47
    Points
    47
    Par défaut ROWTYPE en PL/SQL impossible à créer sous SqlDeveloper
    Bonjour,

    je m'initie au PL/SQL Oracle avec SqlDeveloper.

    Je bute sur l’impossibilité de créer une variable de type ROWTYPE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemTitre    Table_titre%ROWTYPE  ;
    idem si j'essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Subtype ItemTitre  T_TITRE%Rowtype ;
    Cette syntaxe n'est pas reconnue, la saisie automatique ne le propose pas et tous les tutoriels que je trouve sur le net y font référence.


    Avez-vous une idée de ce qui bloque ? Merci de vos conseils

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si la table existe, et que c'est déclaré au bon endroit dans le bloc pl/sql, alors ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > create table Table_titre as select * from dual
    table TABLE_TITRE created.
    > declare
     ItemTitre    Table_titre%ROWTYPE  ;
    begin
     null;
    end;
    anonymous block completed
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 47
    Points
    47
    Par défaut
    mais quoi !!! ton code marche ... (j'ai honte, il parait que je suis informaticienne ). Merci de ta réponse.

    A ma décharge que la saisie auto de Sql Developer ne le met pas en bleu, du coup j'ai bouclé là-dessus.

    Donc l'erreur ne venait pas de là ...

    Peut-être du code pour afficher les données des colonnes ... je ne suis pas sure d'avoir bien compris car je ne trouve pas d'exemple concret sur le net pour afficher les données récupérées dans cette variable. J'ai plusieurs tutoriels ouverts mais ils ne s'étendent pas sur le sujet.

    j'ai essayé ça :

    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
    prompt ;
    accept numcli ;
    declare
     ItemTitre    T_Titre%ROWTYPE  ;
    begin
    --  NULL;
        select t_titre.tit_code, t_titre.tit_libelle  into ItemTitre 
        from T_TITRE , T_CLIENT
        where T_CLIENT.CLI_ID = &NumCli
        and   T_CLIENT.TIT_CODE =  T_TITRE.TIT_CODE ;
        dbms_output.put_line( ItemTitre.tit_code, ItemTitre.tit_libelle );
    end;
     
    Rapport d'erreur :
    ORA-06550: Ligne 9, colonne 5 :
    PLS-00306: numéro ou types d'arguments erronés dans appel à 'PUT_LINE'
    ORA-06550: Ligne 9, colonne 5 :
    PL/SQL: Statement ignored
    06550. 00000 -  "line %s, column %s:\n%s"
    *Cause:    Usually a PL/SQL compilation error.
    *Action:
    Normalement je ne récupère qu'une seule occurence, mais ça ne marche pas... Comment fait-on pour lire un rowtype ? Merci

  4. #4
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 47
    Points
    47
    Par défaut
    c'est bon j'ai trouvé !! Ce n'est pas une virgule qu'il faut mais 2 pipes

    Ca marche du coup.


    Je te remercie beaucoup

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Pour être plus précis, la fonction dbms_output.put_line ne reçoit qu'un seul paramètre qui est une chaîne de caractères.
    Le pipe va les concaténer, mais vous pouvez construire la chaîne telle que vous la voulez, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbms_output.put_line('Code : ' || ItemTitre.tit_code || ' / Libellé : ' || ItemTitre.tit_libelle);
    Ou encore en deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dbms_output.put_line('Code    : ' || ItemTitre.tit_code);
    dbms_output.put_line('Libellé : ' || ItemTitre.tit_libelle);

  6. #6
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 47
    Points
    47
    Par défaut
    Merci pour ces précisions ... elles me font avancer car j'ai besoin de connaître toutes ces petites subtilités qui ne sont pas toujours décrites dans les tutoriels (ou alors en anglais).

    A tous les coups je plonge directement dans les pièges tendus et j'y passes des heures.

    Merci (et à bientôt je suis sur les exceptions dont le PRAGMA EXCEPTION_INIT dont je n'ai pas encore compris le fonctionnement)

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

Discussions similaires

  1. jointure impossible dans sql server 2005 sous vista
    Par blach dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2009, 10h58
  2. Creation de ma base SQL impossible sous Linux Ubuntu
    Par kalisteboat dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/03/2008, 13h10
  3. Réponses: 2
    Dernier message: 13/02/2006, 10h53
  4. Doc pour créer requetes SQL via ODBC sous EXCEL
    Par satanas dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/01/2005, 08h33
  5. Réponses: 2
    Dernier message: 04/06/2004, 11h11

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