Tablice przechowują listę innych zmiennych tego samego typu. Tablice posiadają indeksy które numerują kolejne elementy i umożliwiają odwoływanie się do nich. Każdy z „wierszy” w tablicy zawiera więc dwa pola – pole indeksu, oraz pole wartości.
Aby zdefiniować tablicę piszemy w sekcji DECLARE :
TYPE NAZWA_TYPU IS TABLE OF WYBRANY_TYP_ZARTOŚCI
INDEX BY;
Następnie by móc z takiego typu tablicowego korzystać, muszę stworzyć zmienną nowo stworzonego typu – w tym przypadku zmienną „tab”. Aby odwołać się do poszczególnej wartości w tablicy podajemy nazwę tablicy i numer pozycji w okrągłych nawiasach.
Atrybuty tablic
Tablice posiadają atrybuty służące do operacji na zawartości tablic.
EXIST(x) – sprawdza czy na pozycji x znajduje się jakiś element. Zwraca wartość bool true lub false.
COUNT – zwraca ilość niepustych elementów w tablicy.
DELETE – usuwa całą zawartość tablicy
DELETE(x) – usuwa element z tablicy znajdujący się pod indeksem X.
DELETE(x,y) – usuwa z tablicy elementy począwszy od indeksu x do y.
LAST – zwraca indeks ostatniego niepustego elementu w tablicy
FIRST – zwraca indeks pierwszego niepustego elementu w tablicy
NEXT(x) – zwraca indeks następnego niepustego elementu tablicy następującego po indeksie X.
PRIOR(x) – zwraca indeks poprzedniego niepustego elementu tablicy znajdującego się przed indeksem x.
Przykłady wykorzystania atrybutów tablic :
Ćwiczenia
1. Stwórz blok anonimowy. Zdefiniuj w nim tablicę typu varchar2 o długości tysiąca pozycji. Zainicjuj wszystkie pozycje treścią "pusto".
2. Do bloku z ćwiczenia nr. 1 dodaj podsumowanie sprawdzające i wypisujące na ekranie ile pól w tablicy zostało wypełnionych.
Ten temat omawiam na poniższych szkoleniach:
• Programowanie w PL/SQL
• Podstawy SQL i PL/SQL
Możesz w nich uczestniczyć, a jako czytelnik tego bloga otrzymasz 10% zniżki - poinformuj o tym fakcie konsultanta.
czym jest zapis "index by binary_integer", a w szczególności "binary_integer"
OdpowiedzUsuńChodzi o to, że odwołując się do jakiegoś elementu w tablicy odwolujemy się po indeksie. Ten indeks też musi być jakiegoś typu danych. Jest to binary_integer, pls_integer albo varchar2.
OdpowiedzUsuńCzy tablice są tu jak listy? Mogą mieć dowolny rozmiar?
OdpowiedzUsuńRozwiązanie 1,2
OdpowiedzUsuńdeclare
type tablica is table of varchar2(30)
index by binary_integer;
tab tablica;
petla number;
wypelnienie varchar2(10) default 'pusto';
BEGIN
for petla in 1..1000
loop
tab(petla) := wypelnienie;
dbms_output.put_line('tab('||petla||')= '||wypelnienie);
end loop;
dbms_output.put_line('Iliść wypelnionych pól w tablicy : '||tab.count);
end;
czy jako parametr można przekazać do procedury tablicę?
OdpowiedzUsuńprosiłbym o krótki przykład. szukam od kilku dni i nigdzie nie znalazłem na ten temat informacji.
Chyba jest coś nie tak w:
OdpowiedzUsuń-COUNT – zwraca ilość niepustych elementów w tablicy.
Co masz na myśli przez "niepustych".
Poniższy skrypt zwróci 5 elemntów:
declare
type tablica is table of varchar2(200) index by binary_integer;
tab tablica;
begin
dbms_output.put_line('Ilosc elementow: ' || tab.count);
end;
zwraca 0 więc jaki problem?
Usuń