|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 67 ![]() |
Bonjour à tous,
j'ai petit problème bizarre avec un bout de code que je viens d'écrire, et que je vous soumets. J'essaye de faire un update dans un forall avec une collection et à la compilation j'ai une erreur invalid datatype. ce qui est bizarre c'est que cette erreur semble d'habitude se produire dans des ordres DDL : ORA-00902 Voici le code: D'abord j'ai créé les types et variable suivants Code :
Code :
Pour ceux qui se demande à quoi servent les treat, je suis sous oracle 9.2 et je les ajoutés comme workaround à l'erreur PLS-00436 en suivant cette page Voilà donc quelqu'un saurait il m'expliquer pourquoi j'ai cette erreur et éventuellement comment y remédier? Merci d'avance. |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Si tu regardes avec attention l’exemple du lien qu t’a fourni tu verra que le TREAT s’applique à un OBJECT et non pas à un RECORD.
|
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
coctp et nocon ne sont pas de type negs alors forcément ça fonctionne pas
Pourquoi tu fais un AS negs et pas AS coctp ?
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
|
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 67 ![]() |
mnitu > Très juste, j'avais pas vu. Ça expliquerait le problème de type invalide. Mais je ne vois pas comment créer un objet dans ma fonction PL/SQL. Faut que je creuse un peu dans ce sens car j'ai encore jamais travaillé avec le type object sur oracle.
orafrance> coinf et coctp et nocon et nucon on des types similaires entre eux, et comme negs_tab est un tableau de negs, çà me paraîtrait logique que negs_tab(x) soit du même type que negs. Du coup à la base il ne me semblait pas qu'il y ait de problème de compatibilité. Cela dit j'ai quand même essayé Code :
|
||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Citation:
|
|
|
|
00
|
|
|
#7 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 67 ![]() |
Ok j'ai trouvé la soluce grâce à l'œil perçant de mnitu.
A priori je n'ai pas l'impression qu'il soit possible de créer des type as object dans une fonction PL comme je le faisait pour le type RECORD, j'ai donc retiré mes déclaration de types et fait: Code :
Code :
merci à vous deux pour votre aide. EDIT: mnitu> Oui en fait j'ai usé de cette solution pendant que tu la postais |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com