Tableau en paramètre à une fonction
Bonjour
Environnement :
Oracle 10
Langage
PLSQL
Objectif :
Passer a une fonction un tableau dynamique indexé
Exemple de type
Code:
TYPE_LINE IS TABLE OF VARCHAR2(1024) INDEX BY BINARY_INTEGER;
J’ai retenu la solution du tableau dynamique mais je suis ouvert a toutes propositions
Du moment que je peux stocker plusieurs valeurs et les retrouver avec une indexation
Exemple :
Code:
Taleau(1) :=valeur ou objet.tableau(1):=
D’avance merci
Merci mais pas trop vite que je puisse suivre ...
Bonjour
Pas trop vite .
Voici quelquels infos :
1)Je cherche effectivement a rendre ma fonction indépendante et autonome
(j’aurais du le précisé) nous ne sommes donc pas dans le cas (trop simple) d’un appel depuis une procédure en interne
2)J’ai cherché a créer un type en faisant
Code:
1 2
| create or replace
type tab2D2 IS TABLE OF VARCHAR2(1024) INDEX BY BINARY_INTEGER; |
Le probleme
Si je cherche a compiler j’ai le message suivant
PLS-00255 : Utilisation de la table pl/SQL non autorisé dans ce contexte
Tu dit : il faut déclarer le type tableau dans les specs d'un package et créer la procédure dans le body du même package.
Question : les specs d'un package ?
le body du même package ?
vous auriez un exemple ?
Merci
Les packages PL/SQL se divisent en 2 parties :
Les packages PL/SQL se divisent en 2 parties :
la spécification (les spec) : Partie déclarative du package qui liste les entêtes de procédures et fonctions (contenues dans le package PL/SQL).
le corps du package (le body): possède le code PL/SQL des procédures et fonctions définies dans la spécification.
Syntaxe
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| CREATE [OR REPLACE] PACKAGE BODY nompackage
{ IS | AS }
--Déclarations de variables locales
--Corps des sous-programmes publics et privés
BEGIN
END [nompackage] ;
Exemple en code
view sourceprint?
01.-- 1) Installation d'un package
02.CREATE or replace PACKAGE pacRH
03.AS
04.-- =====================
05./*
06.
Fonction de conversion en FF (arrondir aux centimes) d'un montant transmis en EURO.
07.*/
08.
FUNCTION ConvFF (pMontant NUMBER) RETURN NUMBER ;
09.
10.END pacRH ;
11.
12.-- 2) Implémentation du corps de package
13.CREATE or replace PACKAGE BODY pacRH
14.AS
15.
16.-- =====================
17.FUNCTION ConvFF (pMontant NUMBER)
18.RETURN NUMBER
19.IS
20.
vTaux CONSTANT NUMBER := 6.55957 ;
21.BEGIN
22.
RETURN ( ROUND( pMontant * vTaux, 2) ) ;
23.EXCEPTION
24.
WHEN others THEN RETURN (null) ;
25.END ConvFF ;
26.
27.END pacRH ;
28.
29.-- =======================================
30.-- Test
31.select * from salarie
32.where pacRH.ConvFF(sal) > 12000 ;
33.
34.-- ======================================= |
Avec cela nous y voyons plus claire
Je sais ce que c'est q'un package
ou se trouve le spec le body.
Mais auriez vous un petit exemple pour comprendre l'explication ?
"il faut déclarer le type tableau dans les specs d'un package et créer la procédure dans le body du même package"
d'avance merci