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 :

Vue sur une fonction avec des paramètres


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 27
    Points : 35
    Points
    35
    Par défaut Vue sur une fonction avec des paramètres
    Bonjour,

    Voila je cherche a faire une chose un peu particulière, je veux faire une vur sur une fonction utilisant des parametres, mais passer ces parametres dans la WHERE clause lors d'une requete sur ma vue.

    Je suis obligé de passer par la WHERE clause car en fait j'utilise un outil qui traduit automatiquement mes requêtes en SQL, et cet outil n'est normalement fait que pour faire des requêtes simple sur des tables ou des vues.

    Voici un exmple de code que j'utilise pour créer une fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create or replace type virtual_table_type AS OBJECT (item_id number(6), internal_text varchar(32));
    create or replace type virtual_table_type_set as table of virtual_table_type;
    create or replace function virtual_table( p_num_rows in number ) return virtual_table_type_set PIPELINED IS
        begin
            for i in 1 .. p_num_rows
            loop
                pipe row( virtual_table_type(i, 'TEST' || TO_CHAR(i)) );
            end loop;
           return; -- note return with no value!
       end;
    qui donne le resultat suivant quand on l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select * from TABLE( virtual_table(5) );
     
     ITEM_ID INTERNAL_TEXT
     ------- -------------
           1 TEST1
           2 TEST2
           3 TEST3
           4 TEST4
           5 TEST5
    J'aimerais donc créer une vue sur cette fonction afin d'obtenir le même résultat, l'appel à la vue se ferait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM view_virtual_table WHERE p_num_rows = 5
    On obtiendrais alors le même résultat que précédement.

    Je ne sais pas si c'est possiblt ou non ou alors si je dois créer d'autres object dans ma base pour y arriver, peut en passant pas des table temporaire ou autres.

    Merci d'avance pour votre aide:

    Pierre

  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
    Non ce n'est pas possible. Vous pouvez créer une vue sur une fonction pipelined sans paramètres et avant de l'appeler de lui transmettre des valeurs à utiliser dans la fonction via Sys_Context, une table temporaire ou autre mécanisme.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2012, 18h14
  2. [FLASH MX2004] Lancer une anim avec des paramètres ??
    Par gchanteux dans le forum Flash
    Réponses: 4
    Dernier message: 23/03/2005, 17h49
  3. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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