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 :

Retourner une ligne d'une table avec une procédure


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 28
    Points
    28
    Par défaut Retourner une ligne d'une table avec une procédure
    Bonjour,

    Je souhaite pouvoir créer une procédure qui me retourne une ligne d'une table qui prend en paramètre l'id_utilisateur.

    Je dois prendre des informations de 2 tables et faire une jointure. Là dans mon cas le %rowtype ne sera pas utilisable, sauf le RECORD.
    Je sais qu'avec une fonction il est possible d'afficher ces infos avec plusieurs variables mais bon, je pense à ce moyen(record) et voir si c'est possible.

    Maintenant, dans ma procédure est-il possible de retourner une ligne entière comme si c'était une requête (et non un affichage en dbms_output)?

    edit: on dirait que seule une fonction puisse le faire...par la procédure pas d'autres alternatives que le dbms_output.

  2. #2
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Salut,

    Pourquoi ne veux-tu pas utiliser une fonction ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Hum he bien je supposais qu'il aurait été mieux que j'affiche le résultat voulu "comme une requête".
    Le fait est que je ne suis pas encore sur le domaine applicatif mais seulement la bdd avec création de tables,procédures, packages et fonction.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu veux retourner un ensemble de colonne qui ne soit pas ROWTYPE car tu as plusieurs tables? dans une procédure?

    bon, une procédure ne retourne rien, mais tu pourrais avoir un OUT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create or replace type emp_dept_record is object (
      empno number,ename varchar2(10),deptno number,dname varchar2(14));
    /
    create or replace procedure p(r out emp_dept_record, empno number) is
    begin
      select emp_dept_record(empno,ename,deptno,dname) into r 
      from emp join dept using (deptno) 
      where emp.empno=p.empno; 
    end;
    /
    test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> declare
      2    r emp_dept_record;
      3  begin
      4    p(r,7788);
      5    dbms_output.put_line('ENAME='||r.ename);
      6    dbms_output.put_line('DNAME='||r.dname);
      7  end;
      8  /
    ENAME=SCOTT
    DNAME=RESEARCH

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Merci pour cette réponse, en attente de reup du serveur, je peux rien faire ^^.
    Je teste ça et te tiens au jus.

    edit: privilèges insuffisants donc je vais attendre l'aval du dba argh...

  6. #6
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    J'ai testé la solution de Laurent et elle me paraît OK. Je n'aurais pas pensé au OUT une procédure .

    Merci Laurent.

    LBO72.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Moi non plus d'ailleurs. Merci pour l'astuce .

Discussions similaires

  1. [DATA] Comment créer une table avec une ligne pour chaque individu
    Par andrea0 dans le forum SAS Base
    Réponses: 7
    Dernier message: 10/10/2013, 13h18
  2. supprimer une ligne d'un datagridview avec une requêtte sql
    Par Paradisma dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/09/2010, 00h59
  3. Réponses: 1
    Dernier message: 08/05/2009, 23h12
  4. Tableau avec une ligne d'en-tête et une colonne fixe
    Par heddicmi dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 22/11/2006, 18h45
  5. Réponses: 4
    Dernier message: 23/10/2006, 09h09

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