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 10/09/2008, 22h33   #1
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 0
Points : 0
Par défaut Fonction en local dans un PL/SQL

Bonjour,
Je suis en train d'écrire un PL/SQL dans lequel je me rend compte que je pourrais mutualiser une bonne partie dans une fonction.
Je sais bien évidemment qu'il est possible de stocker cette fonction au niveau de la base en rajoutant un CREATE or REPLACE devant le nom de la fonction.
Par contre, je n'ai pas particulièrement besoin que cette fonction soit stocké au niveau de la base (pas de pb de perf, pas de mutualisation,...), et j'ai vu que les CREATE et REPLACE ne sont pas obligatoires.
Du coup, je me dis qu'il devrait être ainsi possible d'avoir une fonction dont la visibilité se limite au PL/SQL. Et là, pas moyen de voir quel serait la structure de mon code.

Pour l'instant, j'ai un truc du genre (qui marche pas):

declare
hv_mavariable number;
....
begin
mafonction (pouet IN number) return number
is ...
begin
....
end;

-- appels de la fonction
mafonction(hv_mavariable);
mafonction(hv_mavariable2);
mafonction(....);
end;
batin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 05h07   #2
Membre éprouvé
 
Avatar de rvfranck
 
Étudiant
Inscription : novembre 2004
Messages : 739
Détails du profil
Informations personnelles :
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 739
Points : 494
Points : 494
Et c'est quoi le probleme?
__________________
"Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang
rvfranck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 08h49   #3
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 0
Points : 0
le problème, c'est que j'arrive pas à appeler une fonction qui se trouve en local dans mon code, et que je n'arrive à trouver aucune info sur le net (systématiquement, c'est que des fonctions stockés au niveau de la base)
batin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 09h44   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
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 320
Points : 5 839
Points : 5 839
Voilà un exemple
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
declare
  a number;
  --
  FUNCTION f RETURN Number IS
  Begin
    RETURN 1;
  End;
Begin
  a := f();
  dbms_output.put_line(To_Char(a));
end;
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 13h38   #5
Membre confirmé
 
Avatar de JerryMouse
 
Homme N'Guessan KOUAME
Inscription : avril 2002
Messages : 210
Détails du profil
Informations personnelles :
Nom : Homme N'Guessan KOUAME
Localisation : Côte d'Ivoire

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 210
Points : 270
Points : 270
Envoyer un message via MSN à JerryMouse Envoyer un message via Yahoo à JerryMouse
Effectivement, la fonction se declare dans la partie déclative du bloc qui l'utilisera.
__________________
Très souvent, le plus difficile est de savoir ce que l'on veut.
JerryMouse 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 05h37.


 
 
 
 
Partenaires

Hébergement Web