Hi,
Ik ben bezig met Oracle Portal en daarin heb ik een package aangemaakt waar
1 van de procedures een tweetal parameters gebruikt. Een van deze 2 parameters
is een zogenaamde pl/sql table (array).
Uit de package definitie:
Vervolgens wil ik vanuit een form deze package aanroepen, zodat er netjes
waarden naar toe gaan (en ik maar op 1 centrale plaats mijn HTML hoef te
beheren). Dat doe ik als volgt:
Op deze manier kan ik netjes de waarden die in tab_data staan doorsturen naar
die procedure. Het eerst wat ik doe in die procedure is het aantal rijen dat in
tab_data staat naar buiten schrijven m.b.v. htp.p
Alleen ik krijg 0 terug.
Als ik gewoon eigenwijs toch probeer de waarde van tab_data(0).naam naar buiten
te schrijven, krijg ik een foutmelding (no data found), wat er op wijst dat om een of
andere reden de array leeg is. (ikke niet begrijp).
Heeft iemand enig i.d. waar dit aan kan liggen?
Nog even voor de puristen onder ons:
Het gaat om Oracle 9iAS R2 draaiend op RedHat 7.3, i.c.m. bijbehorende Oracle
Portal. Customer database is 9.0.2
wkr
Ik ben bezig met Oracle Portal en daarin heb ik een package aangemaakt waar
1 van de procedures een tweetal parameters gebruikt. Een van deze 2 parameters
is een zogenaamde pl/sql table (array).
Uit de package definitie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| TYPE rt_data IS RECORD
(naam varchar2(50)
,waarde varchar2(50)
);
rec_data rt_data;
TYPE tt_data IS TABLE OF rt_data
INDEX BY BINARY_INTEGER;
tab_data tt_data;
procedure p_toon_header
( p_naam in varchar2
, p_data in tab_data%type); |
Vervolgens wil ik vanuit een form deze package aanroepen, zodat er netjes
waarden naar toe gaan (en ik maar op 1 centrale plaats mijn HTML hoef te
beheren). Dat doe ik als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| declare
tab_data <<schema_naam>>.<<package_naam>>.tab_data%type;
rec_data <<schema_naam>>.<<package_naam>>.rec_data%type;
begin
-- vul variabelen --
rec_data.naam := '0';
rec_data.waarde := '0';
tab_data(0) := rec_data;
rec_data.naam := '1';
rec_data.waarde := '1';
tab_data (1) := rec_data;
<<schema_naam>>.<<package_naam>>.p_toon_header('test',tab_data);
end; |
Op deze manier kan ik netjes de waarden die in tab_data staan doorsturen naar
die procedure. Het eerst wat ik doe in die procedure is het aantal rijen dat in
tab_data staat naar buiten schrijven m.b.v. htp.p
code:
1
| htp.p('Het aantal rijen is ' || tab_data.count ); |
Alleen ik krijg 0 terug.
Als ik gewoon eigenwijs toch probeer de waarde van tab_data(0).naam naar buiten
te schrijven, krijg ik een foutmelding (no data found), wat er op wijst dat om een of
andere reden de array leeg is. (ikke niet begrijp).
Heeft iemand enig i.d. waar dit aan kan liggen?
Nog even voor de puristen onder ons:
Het gaat om Oracle 9iAS R2 draaiend op RedHat 7.3, i.c.m. bijbehorende Oracle
Portal. Customer database is 9.0.2
wkr
Egoist: A person of low taste, more interested in themselves than in me