prog:oracle_text_in_plsql
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
prog:oracle_text_in_plsql [2016/02/20 16:14] – gpipperr | prog:oracle_text_in_plsql [2016/04/25 22:12] (aktuell) – [Oracle Text für die Verarbeitung von Binären Daten in PL/SQL verwenden] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ======Oracle Text für die Verarbeitung von Binären Dokumenten in PL/SQL verwenden===== | ||
+ | |||
+ | Einführung in Oracle Text => [[dba: | ||
+ | |||
+ | Neben der Hauptfunktion der Volltext Suche können die Oracle Text Feature auch in PL/SQL für das Arbeiten mit Binären Dokumente verwendet werden. | ||
+ | |||
+ | Zum Beispiel einen Vorschauansicht eines binären Dokumentes wie MS Word in Oracle Apex darzustellen oder binäre Daten auszulesen und zu verarbeiten. | ||
+ | |||
+ | Dazu kann sehr gut das [[https:// | ||
+ | |||
+ | ===Ein erstes Beispiel=== | ||
+ | |||
+ | Eine Filter Regel anlegen wie das Dokument verarbeitet werden soll: | ||
+ | |||
+ | <code sql> | ||
+ | begin | ||
+ | -- create the policy for this example | ||
+ | ctx_ddl.create_preference(preference_name => ' | ||
+ | , object_name | ||
+ | | ||
+ | ctx_ddl.set_attribute(preference_name | ||
+ | , attribute_name | ||
+ | , attribute_value | ||
+ | | ||
+ | ctx_ddl.create_policy(policy_name | ||
+ | , filter | ||
+ | end; | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Das Dokument lesen und verarbeiten, | ||
+ | |||
+ | <code sql> | ||
+ | -- read the data and classify | ||
+ | declare | ||
+ | -- The id of the test document | ||
+ | v_doc_id number: | ||
+ | v_doc_text clob; | ||
+ | v_file_doc bfile; | ||
+ | v_blob_doc blob; | ||
+ | v_amount | ||
+ | v_position integer := 1; | ||
+ | v_buffer raw(32767); | ||
+ | begin | ||
+ | -- read the bfile from the database | ||
+ | select filepointer | ||
+ | into v_file_doc | ||
+ | from documents | ||
+ | where id = v_doc_id; | ||
+ | | ||
+ | -- create a temporary CLOB to hold the document text | ||
+ | dbms_lob.createtemporary(v_blob_doc, | ||
+ | | ||
+ | -- read the bfile to the blob | ||
+ | dbms_lob.open(v_file_doc, | ||
+ | loop | ||
+ | begin | ||
+ | dbms_lob.read(v_file_doc, | ||
+ | exception | ||
+ | when no_data_found then | ||
+ | exit; | ||
+ | end; | ||
+ | dbms_lob.writeappend(v_blob_doc, | ||
+ | v_position := v_position + v_amount; | ||
+ | end loop; | ||
+ | dbms_lob.close(v_file_doc); | ||
+ | | ||
+ | -- | ||
+ | -- call ctx_doc.policy_filter to filter the BLOB to CLOB data | ||
+ | -- | ||
+ | ctx_doc.policy_filter(' | ||
+ | | ||
+ | | ||
+ | -- Do now something with the pure TXT data of the document | ||
+ | -- | ||
+ | dbms_output.put_line(substr(v_doc_text, | ||
+ | -- | ||
+ | -- | ||
+ | |||
+ | --free the lob | ||
+ | dbms_lob.freetemporary(v_blob_doc); | ||
+ | end; | ||
+ | / | ||
+ | </ | ||
+ | |||
prog/oracle_text_in_plsql.txt · Zuletzt geändert: 2016/04/25 22:12 von gpipperr