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
ensuite divers traitements, puis le code qui me pose problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 TYPE negs IS RECORD ( nucon hisneg.nucon%type, coinf hisneg.coinf%type ); TYPE negs_tab IS TABLE OF negs INDEX BY BINARY_INTEGER; waitNegList negs_tab;
J'ai bien vérifié l'erreur est liée à l'ordre update (quand je le commente la fonction compile bien).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 select nucon, coinf bulk collect into waitNegList from bnp_tmp_tradfeed_tmp td join (select nubix, nucon, coinf from hisneg union select nubix, nucon, coinf from ficneg) neg on neg.nucon = td.nocon where neg.coinf in ('WAITPAR', 'WAITLON') and neg.nubix not in (select nubix from anuptf); forall x in waitNegList.first .. waitNegList.last update bnp_tmp_tradfeed_tmp set coctp = treat(waitNegList(x) as negs).coinf where nocon = treat(waitNegList(x) as negs).nucon;
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.
Partager