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 :

recuperation d'un rowtype a partir d'un select, bd oracle9i


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 190
    Par défaut recuperation d'un rowtype a partir d'un select, bd oracle9i
    Bonjour,
    j'utilise un curseur sur une table contrat
    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
    CURSOR contrat_cursor (per_param IN NUMBER)
       IS
          SELECT *
            FROM CONTRAT
           WHERE PER_ID  = per_param;
       contrat_rec  contrat_cursor%ROWTYPE;
     
     
    --ensuite je fais un parcours du curseur
    loop 
      FETCH contrat_cursor INTO contrat_rec;
    	  	EXIT WHEN contrat_cursor%NOTFOUND;
    -- serie de TRT
     
    end loop ;
    ce traitement pour chaque contrat, je veux le factoriser en une procedure
    auquelle je passe en parametre , la cle du contrat
    ma question est comment puis
    recuperer un
    contrat_cursor%ROWTYPE
    a partir d'une
    select * from contrat where cle=val
    Cdlt
    Elyes

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Pourquoi ne pas passer directement en paramètre de ta procédure un contrat_cursor%ROWTYPE ?? Ce que tu veux faire va t'obliger à faire une requête supplémentaire par contrat alors que ce sont des infos que tu as déjà....?
    Sinon pour répondre à ta question tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    declare
      contrat_rec  contrat_cursor%ROWTYPE;
    begin
      select * 
      into contrat_rec
      from contrat
      where cle=val
    (à savoir que ça te lévera une exception si tu as 0 ou plusieurs lignes ; mais si tu utilises la clé tu en auras une seule)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Si jamais tu veux néanmoins à tout prix passer la clé du contrat en paramètre, dans ton select il te suffit de faire un "select cle" à la place du "select *". Et au lieu d'utiliser un contrat_cursor%ROWTYPE tu utilises simplement une variable du type de ta clé.

    Si tu veux améliorer les performances, tu peux aussi créer un tableau de clés et faire un BULK COLLECT dans ce tableau. Ca te ramène tout en une seule opération et ensuite au lieu de faire un curseur tu parcours le tableau. (ça marche aussi si tu ramènes une ligne au lieu de la clé seule). Par contre évite ou bien fais un peu plus de recherches si ta table est énorme pour éviter un débordement...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 190
    Par défaut
    en fait, j'utilise toad pour la creation de cette procedure
    et donc il faut que je declare ce curseur avant
    avez vous idee comment le faire avec sql window de toad

    Cdlt
    Sallemel

Discussions similaires

  1. [MySQL] recuperer la valeur posté a partir d'un select lui même basé sur une BBD
    Par nico le noob dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/08/2010, 17h51
  2. Réponses: 2
    Dernier message: 25/11/2006, 19h52
  3. [VS NET 05] Recuperer le chemin DOS a partir d un fullpath
    Par Pasiphae dans le forum Visual Studio
    Réponses: 8
    Dernier message: 12/04/2006, 17h19
  4. Recuperer un logiciel complet A partir d'une mise a jour
    Par salimooo dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 29/03/2006, 09h28

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