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

Oracle Discussion :

Fonction pipelined et initialisation


Sujet :

Oracle

  1. #1
    Candidat au Club
    Femme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Fonction pipelined et initialisation
    Bonjour,
    Je souhaite savoir si c'est possible quand on crée une fonction pipelined qui nous renvoie les donées au fur et à mesure, si on veut initialiser suite à une exception les données renvoyés par la fonction ou la rappeler autrement avec un autre curseur...

    Comment peut on la initialisée ou faire un clean.
    Merci

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Reformulez votre question parce que tel quel elle est incompréhensible.

  3. #3
    Candidat au Club
    Femme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Reformulez votre question parce que tel quel elle est incompréhensible.
    Ce que je souhaite savoir si un no_data_nedded est déclenchés comment je peux dire de faire un clean et donc de rappeller une nouvelle fois cette focntionc si j'ai besoin.

    AUssi, je souhaite savoir si je fais une fonction pipelined qui va ramerner toutes les données d'un client par exemple et que moi dans mon traitmeent je fais appel à cette fonction au fur et à mesure que j'ai besoin d'un sur un client. ESt ce à la fin de la transaction que les données sont supprimé de cette table mémoire ou c'est nous qui doivent initialiser.
    Merci

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Désolé mais ce loin d'être claire. Si une exception NO_DATA_NEEDED est déclenchée vous pouvez l'intercepter dans le gestionnaire d'exception de la fonction pipelined pour faire le "nettoyage" nécessaire. Pour l'instant je ne vois pas pourquoi vous devez ré exécuter la fonction, mais peut être que vous avez un exemple concret à nous montrer de ce que vous voulez accomplir.
    Lisez aussi ce lien sur ce topique.

    Je ne comprends par non plus ce que vous voulez dire par "table mémoire" en contexte de l'utilisation des fonctions pipelined. Pareil, peut être que vous pouvez détailler vos besoins avec un exemple.

  5. #5
    Candidat au Club
    Femme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Désolé mais ce loin d'être claire. Si une exception NO_DATA_NEEDED est déclenchée vous pouvez l'intercepter dans le gestionnaire d'exception de la fonction pipelined pour faire le "nettoyage" nécessaire. Pour l'instant je ne vois pas pourquoi vous devez ré exécuter la fonction, mais peut être que vous avez un exemple concret à nous montrer de ce que vous voulez accomplir.
    Lisez aussi ce lien sur ce topique.

    Je ne comprends par non plus ce que vous voulez dire par "table mémoire" en contexte de l'utilisation des fonctions pipelined. Pareil, peut être que vous pouvez détailler vos besoins avec un exemple.
    Je vous remercie d'abord.

    EN effet, en ce qui me concerne, J'ai une grande pipelined qui prend dans le curseurs des données à partir de table références, ensuite dans le pipe row de la fonction je renvoie une grande ligne composée de différents item. ces derniers je les obtiens avec des IDs ou clés qui sont ramenés dans la la fonction pipelined, comme par exemple le détail d'un contrat dont j'ai dans la fonction pipelined que le numéro de contrat et dont j'ai besoin d'aller chercher dans les tables détails pour ces infos.

    Donc, j'ai commencé par définir une fonction pipelined qui me ramène toutes les lignes dont j'ai besoin, et au fur à mesure je fabrique mon pipe row de sortie avec les détails des tables annexes sauf que ça prend du temps de faire une inerrogation sql à chaque fois pour le détail du contrat dans un table, détail des données clients...
    Donc, je me suis dits de les mettre les détails de contrats dans une autre fonction pipelined et faire un select avec la clause sur le numéro de contrat comme ce sera plus rapide, mais j'ai pu le réussir qu'avec des select into classique et avec pipelined il me dit pas de donnée ...

    Je ne sais pas si j'étais clair

  6. #6
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par ang_pot Voir le message
    ...
    Donc, j'ai commencé par définir une fonction pipelined qui me ramène toutes les lignes dont j'ai besoin, et au fur à mesure je fabrique mon pipe row de sortie avec les détails des tables annexes sauf que ça prend du temps de faire une inerrogation sql à chaque fois pour le détail du contrat dans un table, détail des données clients...
    ...
    Ca ce sont des jointures faite en PL/SQL qui sont inefficaces. Faite ces jointures en SQL c'est fait pour. Soit vous les ramènes de le départ dans la fonction pipelined soit vous le mettez en jointure avec la fonction pipelined.

Discussions similaires

  1. Fonction PIPELINED : gain de performance
    Par haykelFST dans le forum PL/SQL
    Réponses: 4
    Dernier message: 14/11/2012, 09h45
  2. Réponses: 0
    Dernier message: 04/07/2010, 01h52
  3. Fonctions Pipelined et tables mutantes
    Par labolabs dans le forum PL/SQL
    Réponses: 10
    Dernier message: 27/04/2010, 09h29
  4. faire un loop dans une fonction pipelined
    Par fatsora dans le forum Oracle
    Réponses: 4
    Dernier message: 28/03/2008, 17h42

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