Die Tabelle für das Beispiel
CREATE TABLE t_pages ( pages_id NUMBER, url VARCHAR2(80), page CLOB ); -- Sequenz für das Increment der ID CREATE SEQUENCE t_pages_autoinc_seq START WITH 1 INCREMENT BY 1 NOCACHE NOMAXVALUE; -- Trigger zum Aufruf der Sequenz CREATE OR REPLACE TRIGGER t_pages_autoinc_trigger BEFORE INSERT ON t_pages FOR EACH ROW BEGIN SELECT t_pages_autoinc_seq.NEXTVAL INTO :NEW.pages_id FROM DUAL; END; /
Der Trigger löst folgendes aus:
Wird ein Datensatz mit einer gültigen URL eingefügt, wird die Seite aufgerufen und der HTML-Code der Seite in den CLOB geschrieben.
CREATE OR REPLACE TRIGGER insert_page
BEFORE INSERT ON t_pages
FOR EACH ROW
DECLARE
req UTL_HTTP.req;
resp UTL_HTTP.resp;
page CLOB;
BEGIN
-- Verbindung aufbauen
req := UTL_HTTP.begin_request(:new.url);
-- Als Mozilla ausgeben
UTL_HTTP.set_header(req, 'User-Agent', 'Mozilla/4.0');
resp := UTL_HTTP.get_response(req);
UTL_HTTP.read_text(resp, page, 50000);
UTL_HTTP.end_response(resp);
:new.page := page;
EXCEPTION
WHEN
UTL_HTTP.end_of_body
THEN
UTL_HTTP.end_response(resp);
END;
/
Beispiel zum Aufrufen des Ganzen
INSERT INTO t_pages (url)
VALUES ('http://www.ufz.de/');
Keine Kommentare:
Kommentar veröffentlichen