Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 19h43   #1
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Par défaut Liste des arguments d'un procédure ou fonction

Bonsoir,

J'aimerais savoir si il est possible d'obtenir une liste des arguments d'une procédure ou d'une fonction (d'un package ou non), un peu a la manière de l'objet "arguments" en JavaScript (pour exemple, uniquement).

J'ai bien vu des tas de chose intéressantes, telles que la table ALL_ARGUMENTS qui me donne tout un tas de détails utiles, mais il me manque le principal ... les valeurs des arguments au moment ou la fonction (ou procédure) est exécutée.

Merci d'avance,
@+
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 09h44   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 313
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 313
Points : 5 819
Points : 5 819
Les valeurs des arguments sont connues par la procédure elle même et je pense qu’elles sont disponibles également dans une trace SQL étendue.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 10h33   #3
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Je me suis déjà confronté à cette problématique

http://dioncho.wordpress.com/2009/05...he-bind-value/
__________________
Bien Cordialement
www.hourim.wordpress.com
Mohamed.Houri est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 20h24   #4
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonsoir,

Merci a vous pour vos réponses.
J'ai en effet bien vu vos messages ce matin, et j'avais recommencé a travailler la dessus, mais j'ai du dériver sur autre chose; cela m'a finalement pris toute la journée.
Je vous tiendrais au courant de ce que j'ai pu / su faire ou pas, dès que possible.

Merci encore,
@+
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 19h39   #5
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonjour,

Voici ou j'en suis... j'ai bien envie de me laisser penser que j'ai une solution fiable qui réponds a ma situation (bien que j'aurais rêvé mieux); mais malgré tout j'ai peur de passer a côté d'une chose importante, étant donné que je fais appel a des vues de SYS, et que je ne prétends pas être un expert.
Pour résumer donc, j'espère faire récupérer le SQL qui est en cours d’exécution par la fonction qui l'a elle même lancé. Ainsi, je n'aurais plus qu'a "nettoyer" la chaîne obtenue, et faire un "dbms_utility.comma_to_table" sur la partie de la chaîne qui restera (et qui correspondra alors aux valeurs passées en arguments).
Voici donc le test (fonction dans un package):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
     FUNCTION start_test ( p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN VARCHAR2 )
          RETURN INTEGER
     AS
          current_sql   CLOB;
     BEGIN
          current_sql   := EMPTY_CLOB ( );
          /*
          ... avant toute chose, tentons de récupérer ce le SQL ...
          */
          SELECT d.sql_fulltext
            INTO current_sql
            FROM (SELECT address, hash_value
                    FROM v$open_cursor
                   WHERE user_name = USER AND sid = SYS_CONTEXT ( 'USERENV', 'SID' )) a
               ,  (SELECT to_name, from_address
                     FROM v$object_dependency
                    WHERE to_owner = USER) b
               ,  (SELECT address, hash_value, sql_fulltext
                     FROM v$sql
                    WHERE users_executing > 0
                      AND parsing_schema_name = USER
                      AND TRUNC ( last_active_time, 'MI' ) = TRUNC ( SYSDATE, 'MI' ) -- <-tentative peut être naive de réduire le nombre d'enregistrements remontés par l'appel a cette vue
                      ) d
               ,  (SELECT object, TYPE
                     FROM v$access
                    WHERE owner = USER AND TYPE = 'PACKAGE' AND sid = SYS_CONTEXT ( 'USERENV', 'SID' )) e
           WHERE a.address = d.address
             AND a.hash_value = d.hash_value
             AND a.address = b.from_address
             AND b.to_name = e.object;
 
          DBMS_OUTPUT.put_line ( current_sql );
 
          /*
          ...maintenant on fait pleins de trucs intéressants ici ...
          */
          RETURN 1;
     END start_test;
Si tout ce qui suit le "SELECT" est correct, j'appliquerais alors de manière étendue cette méthode dans une fonction de chacun de mes petits packages, et continuerais ma petite histoire ...

Croyez vous que je me fourre le doigt dans l'oeil et qu'il y a un risque pour que - dans un scénario que je n'ai pas anticipé - je récupère "sql_fulltext" qui ne soit pas le bon ?

Merci d'avance,
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 11h12   #6
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 353
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 353
Points : 9 745
Points : 9 745
Bonjour

A tout hasard, on peut connaitre la finalité de ta demande ?

Quel est l'objectif fonctionnel ?
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 14h52   #7
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonjour Bluedeep,

Disons que tout ceci est purement "expérimental" pour moi, test uniquement.
Imaginons que cette fonction soit en fait créée dynamiquement, basée sur des infos qui tomberaient dans une table (peu importe).
J'aimerais pouvoir insérer dans le code de celle ci, et d'éventuelles autres créées de la même manière, un process qui me permette de récupérer les arguments qui leur sont passés.
Je n'ai pas su tirer parti des pistes données par les deux précédant intervenants, et suis finalement tombé sur ces vues, comme "v$open_cursor".

Bien que les infos remontées via v$open_cursor et autres dans le test que je fais me semblent toujours bonnes, ma crainte est de passer a côté de quelque chose - faute a mon manque de connaissances - qui fausserait tout au final.
Et peut être y a t il plus simple, plus direct pour faire ce que je cherche ...
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h52.


 
 
 
 
Partenaires

Hébergement Web