wtorek, 12 lipca 2011

Pakiet UTL_HTTP - czytanie stron internetowych przy pomocy PL/SQL

Czasem zdarza się konieczność zaczytania stron internetowych np. jeśli potrzebujemy aktualnych kursów walut albo ściągamy dane z pkt.pl :)
Możemy w tym celu posłużyć się pakietem UTL_HTTP który przeczyta nam źródło strony. Co dalej z tym zrobimy to już nasza sprawa - ja na potrzeby tego przykładu zrzuciłem to na konsolę. Równie dobrze możemy to zapisać do lokalnych plików html na dysku (patrz pakiet utl_file).

Jeżeli planujemy wykorzystywać ten pakiet z poziomu zwyklego usera bazy musimy najpierw z poziomu sysa nadać sobie niezbędne uprawnienia:

grant execute on utl_http to nazwa_usera;

Przykladowy kod:

declare
t_part utl_http.html_pieces;
begin
t_part := utl_http.request_pieces('http://kwejk.pl');
for i in 1 .. t_part.count loop
dbms_output.put_line(t_part(i));
end loop;
end;


Gdyby wyrzuciło Wam w tym przykładzie w SQLDeveloperze albo SQLPlusie jakiś komunikat o przepełnieniu limitu 20000 czegośtam to chodzi o bufor outputu dla dbms_outputa nie problemy z kodem. Wielkość tego bufora ustawiamy sobie w okienku Buffer Size zakładki DBMS OUTPUT.

Miłego zasysania :)