Oracle. PL/SQL. Potrzebuję pomocy z tablicami. Otóż przydałaby mi się
procedura, która jako parametr będzie przyjmowała tablicę wielowymiarową.
Udało mi się zrobić taką, która działa z tablicą jednowymiarową. Poniżej.
Wysyłanie...
create or replace procedure wyslij is
begin
htp.htmlOpen();
htp.bodyOpen();
htp.print('<form method="post" action="!odczyt">');
htp.print('<input type="text" name="tab">');
htp.print('<input type="text" name="tab">');
htp.print('<input type="text" name="tab">');
htp.print('<input type="submit" value="zatwierdź"></form>');
htp.bodyClose();
htp.htmlClose();
end;
Odbieranie...
create or replace procedure odczyt (name_array IN owa.vc_arr, value_array
IN owa.vc_arr) is
begin
htp.htmlOpen();
htp.bodyOpen();
for i in 1..name_array.LAST loop
htp.print('wartość '||i||' to: '||value_array(i));
end loop;
htp.bodyClose();
htp.htmlClose();
end;
Czy ktoś z Was mógłby wygenerować działający kod dla choćby tablicy [3][3]?
Z góry dzięki za pomoc.
--
Pozrawiam,
Varabi
>Witam,
>
>Oracle. PL/SQL. Potrzebuję pomocy z tablicami. Otóż przydałaby mi się
>procedura, która jako parametr będzie przyjmowała tablicę wielowymiarową.
>Udało mi się zrobić taką, która działa z tablicą jednowymiarową. Poniżej.
Wreszcie jakaś rozrywka umysłowa w tym gnuśnym czasie ;)
Może po prostu zdefiniuj w pakiecie typ tablicowy.
Nie jestem pewien co chcesz zrobić, ale przykład pewnie coś rozjaśni:
declare
-- tablica tablic
type t2_tab is table of owa_text.vc_arr index by pls_integer;
t2_tabela t2_tab;
begin
-- wypełnienie tablic
for i in 1..3 loop
for k in 1..3 loop
t2_tabela(i)(k) := i+k;
end loop;
end loop;
-- odczytanie tablic
for i in 1..t2_tabela.count loop
for k in 1..t2_tabela(i).count loop
dbms_output.put_line('Element ('||i
||')'
||' ('
||k||') = '
||t2_tabela(i)(k));
end loop;
end loop;
end;
--
Sławomir Szyszło
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych
> Może po prostu zdefiniuj w pakiecie typ tablicowy.
> (...)
Dziękuję za pomoc! :) Faktycznie tablica w tablicy załatwia sprawę. W
międzyczasie wpadłem też na inny pomysł - przekazania jako ostatni element
tablicy parametru informującego o tym, ile wyrazów jest w rzędzie. I tak,
dla tablicy [3][n] wyznaczamy po odebraniu n:
n:=(value_array.last-1)/3;
a potem już można np. zapisać do tablicy
for z in 1..3*n loop
tab1(i)(j):=value_array(z);
j:=j+1;
if z=n or z=2*n then
i:=i+1;
j:=1;
end if;
end loop;
--
Pozrawiam,
Varabi