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