PL/PGSQL a vicerozmerna pole
Kluvanek Martin
kluvanek na tesnet.cz
Úterý Leden 20 15:14:54 CET 2004
Jan Vysoky napsal(a):
> Dobry den,
> resim rekl bych pomerne trivialni problem, ale stale se mi neradi ani s pomoci dokumentace a googlu najit reseni.
>
> CREATE OR REPLACE FUNCTION test()
> RETURNS boolean
> AS'
> declare
> i int4[][] = ''{}'';
> begin
> i[1][1] := 1;
> ---> i[1][2] := 1; <---
> return true;
> end;
> '
> LANGUAGE 'plpgsql';
>
> a po zavolani select test() dostanu na vyrazu oznacenem sipkou
> ERROR: invalid array subscripts
No ja som nieco trochu podobne riesil v ORA v PLSQL
a tam to bolo spravne takto:
CREATE OR REPLACE TYPE TYP_VSTUPY_MODULU AS VARRAY(128) of number;
-- atd...
declare
pr mse.TYP_VSTUPY_MODULU:= mse.TYP_VSTUPY_MODULU();
mi mse.TYP_VSTUPY_MODULU:= mse.TYP_VSTUPY_MODULU();
ma mse.TYP_VSTUPY_MODULU:= mse.TYP_VSTUPY_MODULU();
-- Local variables here
i integer;
ii integer;
begin
pr.extend(96);
mi.extend(96);
ma.extend(96);
for ii in 1..1
loop
for i in pr.first..pr.last
loop
pr(i):=i+10000+ii*1000;--nejake data
mi(i):=i+20000+ii*1000;--nejake data
ma(i):=i+30000+ii*1000;--nejake data
end loop;
insert into mse.pomaly_archiv_2 values (1050, sysdate+ii/(24*60*60),12,pr,mi,ma) ;
end loop;
commit;
end;
ten trik bol v tom extend, pretoze v declare som to zalozil ako prazdny vektor a
tym extendom som to natiahol na vektor s 96 prvkami.
No a problem ze nemusim vzdy vediet kolko prvkov ma ten vektor pripadne i kde
zacina riesi metoda .first a .last.
Tak to chodi v ORACLE snad bude nieco podobe i v PL/PGSQL ???
premene polia, mnoziny atd..
>
> Uz opravdu nevim co s tim dal. Dekuji za rady.
>
>
> ____________________________________________________________
> Licitovat nejvyhodnejsi nabídku je postavene na hlavu! Skoda Octavia nyni se zvyhodnenim az 90.000 Kc! http://ad2.seznam.cz/redir.cgi?instance=69100%26url=http://www.skoda-auto.cz/action/fast
>
--
Martin Kluvanek
ved.odd. vyvoje (head of development department)
TES s.r.o
Testovani Energetickych Systemu (Testing of Energetical Systems)
Prazska 597
674 01 Trebic
Czech republic
tel:568 8384 28 (+420 5688384 28)
fax:568 8384 27 (+420 5688384 27)
homepage: http://www.tesnet.cz
Další informace o konferenci Databases