Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suchen in Oracle!!! (https://www.delphipraxis.net/12436-suchen-oracle.html)

samson 27. Nov 2003 12:54


Suchen in Oracle!!!
 
Hallo,

Ich habe da ein Programm geschrieben, wobei es sich um eine Dokumentverwaltung handelt. Die Dokumente selber (tif und pdf) werden auf einer UNIX Maschine gespeichert.

Noch alles gut und schön. Diese Dokumente sind im Prizip mit einem Datensatz in einer Oracle-Entität verlinkt. Diese Datensätze speichern verschiedene Information über das Dokument. Unter anderem kann man eine Bemerkung zu dem Dokument verfassen, bzw. festhalten. Die Bemerkung basiert auf einem Long-Feld in der Oracle-Datenbank, damit ich die RichEdit funktionalitäten benutzen kann.

Für eine Suche-Engine, muss ich AUCH in dem Bemerkungsfeld suchen können, wobei ich gehörig auf die Schnauze gefallen bin.

Gibt es eine Möglichkeit in einem Long-Feld zu suchen??? Der Kunde der das haben will hat Oracle-Server Enterprise Edition und den Oracle-Client 7 sowie der Version 8 im Einsatz.

Was kann ich tuen???

Ich freue mich auf jede Antwort.

Gruss


Samson

Garby 27. Nov 2003 13:16

Re: Suchen in Oracle!!!
 
Hallo,

um in einem Long-Feld zu suchen brauchst du IntermediaText und einen speziellen Index auf dieser Spalte.

Alternativ kannst du statt Long einen CLOB oder BLOB verwenden.
Dann kannst du über das Package DBMS_LOB die gewünschten Operationen durchführen.
In diesem Fall könnte das so aussehen:
SQL-Code:
Select * 
   From Tabelle
  Where DBMS_LOB.Instr(LOBSPALTE, 'Hallo') > 0

samson 27. Nov 2003 13:43

Re: Suchen in Oracle!!!
 
Hallo Garby.

Danke für Deine Antwort. Jetzt ist bei mir nur die Frage, ob der Oracle-Client 7 soetwas unterstützt. Soviel ich weiss hat der den Datentyp: clob bzw. blob nicht. Soviel ich weiss auch nicht das DBMS-Package.

Hmpf.

Aber die erste Alternative scheint interessant zu sein. Kannst du mir darüber zu erzählen???

Danke schon jetzt.

Gruss

Samson

Garby 27. Nov 2003 13:59

Re: Suchen in Oracle!!!
 
Hallo,

BLOBS wurden definitiv von Oracle7, und somit auch vom 7-er Client unterstützt.
Das DBMS_LOB - Package ist im Schema SYS.
Für dieses Package gibt es aber ein PUBLIC Synonym, somit müsstest du es mit jedem User einfach mittels "DBMS_LOB" ansprechen können.

Blobs sind sicher der einfachste Weg sowas zu machen. Ausserdem sind die schneller und flexibler als Long´s.

Intermediatext ist eine zusätzliche Software von Oracle, die am Server installiert werden muss (Informationen dazu findest du sicher im Internet).

Die Investition in eine solche Software und der damit verbundene Aufwand steht IMHO in keinem Verhältnis zu deinem eher einfachen Problem.

samson 27. Nov 2003 15:48

Re: Suchen in Oracle!!!
 
Hallo Garby.

Ich habe jetzt mein Attribut zu einem Blob-Datentyp geändert. Wenn ich jetzt den String mit deinem Vorschlag im PL/SQL Developer suche, habe ich die Fehlermeldung:

ORA-01465: Ungültige Hexadezimalzahl

Weisst Du vielleicht, woran das liegen könnte?

Folgenden SQL-Befehl habe ich verwendet:

SQL-Code:
select * from bemerk_draw01
where dbms_lob.instr(bemerkung, 'Frank') > 0
Danke im Voraus.

Gruss

Samson

Robert_G 27. Nov 2003 16:18

Re: Suchen in Oracle!!!
 
Benutze einfach CLOB nicht BLOB. Ich glaube BLOB ist binary.

Habe gerade eine Tabelle erstellt und deinen SQL-Code verwendet - hat gefunzt :thuimb:

samson 28. Nov 2003 08:15

Re: Suchen in Oracle!!!
 
Hallo,

danke an alle die geholfen haben. Es funktioniert jetzt.

:cheers:

Gruss

Samson


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz