|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2008 Messages : 152 ![]() |
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; Du moment que je peux stocker plusieurs valeurs et les retrouver avec une indexation Exemple : Code :
Taleau(1) :=valeur ou objet.tableau(1):= |
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Inscription : juin 2004 Messages : 495 ![]() |
Bonjour,
J'ai essayé ceci: Code :
Si tu veux une procédure autonome, 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. |
||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2008 Messages : 152 ![]() |
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 :
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 |
||
|
|
00
|
|
|
#4 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2008 Messages : 152 ![]() |
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 :
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 |
||
|
|
00
|
|
|
#5 | ||||||
|
Membre actif
![]() Inscription : juin 2004 Messages : 495 ![]() |
Il existe des types prédéfinis dans Oracle, par exemple VARCHAR2.
On peut créer un nouveau type, mais il faut le placer dans la spec d'un package. Exemple: Code :
Exemple d'utilisation d'un type custom dans le pl/sql d'un trigger ORACLE FORMS: Code :
charge tout le package en mémoire (je crois que c'est dans la library cache). Pour en arriver à ta demande initiale, voici une fonction qui reçoit en argument une variable de type tableau: Code :
|
||||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
À noter que s'il n'y a besoin d'avoir que des tableaux "consécutifs" (ie, pas de trous ; et ça suffit très souvent), on peut utiliser une Nested Table. Auquel cas, la déclaration du type peut se faire en dehors d'un package, au niveau schéma (il suffit d'omettre le index by).
|
|
|
00
|
|
|
#7 | |||||||||
|
Membre actif
![]() Inscription : juin 2004 Messages : 495 ![]() |
Effectivement je ne connaissais pas mais j'ai trouvé des infos:
Création du type: Code :
Code :
Code :
Code :
Citation:
|
|||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com