|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
Bonsoir à tous,
je veux créer une fonction, dans un package, qui retourne un tableau d'entiers, j'ai bien déclaré le type tableau et tt va bien apparement pr la compilation mais lors de l'exécution, il me sort une erreur de type non valide concernant le type de tableau que j'ai déclaré, j'ai remplacé le type de retour par un type simple, et du coup tout fonctionne bien ce qui fait que j'ai le pb dans la déclaration de mon tableau mais je vois pas pourquoi, voilà ma déclaration: type type_tab IS TABLE of number; j'ai essayé même en utilisant: type type_tab IS varray(30) of number; mais ça ne marche pas non plus! est c est la bonne décalaration? si oui d'où vient alors le pb? merci d'avance |
|
|
00
|
|
|
#2 | ||||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Déclarez le type dans les spécifications du package et utilisez ce type pour déclarer votre variable externe:
Code :
Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
merci pr la réponse mais ça ne marche toujours pas, j'ai toujours la même erreur ("type de données non valide").
voilà ma déclaration: sur la spécification du package: TYPE TYPE_TAB is table of pls_integer index by binary_integer; FUNCTION segment_sem(date_deb date) RETURN TYPE_TAB; et sur le corps du package: FUNCTION segment_sem(date_deb date) RETURN TYPE_TAB IS IND NUMBER; les_mois_du_sem TYPE_TAB; mois number; -- j'ai essayé même en mettant pls_integer BEGIN mois:=EXTRACT(month from date_deb); FOR ind IN 1..6 LOOP les_mois_du_sem(IND):=mois; mois:=mois+1; END LOOP; RETURN les_mois_du_sem; end; |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Cette erreur survient sur quelle ligne de code ?
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
en fait, il ne m indique pas la ligne, lors de la compilation tout va bien et il n y a aucune erreur mais lors de l appel de la fonction où ça me sort cette erreur.
et quand je double clique sur l'erreur, voilà qu il me sort: Cause: the datatype entered in the CREATE or ALTER TABLE statement is not valid Action: Correct the syntax voilà l appel de ma fonction: select tp.quest_sem.segment_sem(to_date('12/10/2007','DD/MM/YYYY')) segment_ from dual mon package c'est quest_sem |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
ça ne marche toujours pas
|
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
|
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
En fait on peut utiliser le mot clé : TABLE, mais celui-ci ne peut fonctionner qu'avec un type enregistré en base (collection de type NESTED TABLE), et non dans un package (CREATE TYPE)
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#10 | ||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Voici un petit exemple qui marche:
Code :
|
||
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
wiiiii ça marche
merci infiniment pour votre aide |
|
|
00
|
|
|
#12 | |
|
Membre du Club
![]() Damien JALLON Inscription : juin 2002 Messages : 136 ![]() |
Il y a apparemment une autre technique qui ne nécessite pas une fonction (pas testé car pas les droits de créer un type en base) :
Citation:
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com