Announcement

Collapse
No announcement yet.

Oracle Fehler 932 bei CLOB Vergleichsabfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Oracle Fehler 932 bei CLOB Vergleichsabfrage

    Hallo,

    ich bin relativ unerfahren im Umgang mit Oracle.
    Ich habe jetzt eine recht einfache Abfrage auf ein CLOB-Feld (mit Zend_Db PHP Oracle):
    Code:
    SELECT TABLE.* FROM TABLE WHERE (TEXT = 'ein Text')
    Die Fehlermeldung:
    Code:
    Uncaught exception 'Zend_Db_Statement_Oracle_Exception' with message '932 ORA-00932
    : inconsistent datatypes: expected - got CLOB SELECT TABLE.* FROM TABLE WHERE (*TEXT = 'ein Text')
    Wenn ich das Statement mit dem Oracle SQL Developer ausführe, bekomme ich diese Fehlermeldung:
    Code:
    Fehlerbericht:
    SQL-Fehler: ORA-00932: Inkonsistente Datentypen: - erwartet, CLOB erhalten
    00932. 00000 -  "inconsistent datatypes: expected %s got %s"
    *Cause:    
    *Action:
    Können CLOB-Felder nicht so einfach verglichen werden, oder was ist hier falsch?

    Vielen Dank!
    MfG eztam

  • #2
    Welche Oracle-Version und mit welcher Codepage wurde Oracle installiert bzw. unter welcher Codepage greifst du per PHP zu? Je nachdem funktioniert es nicht richtig.

    Comment


    • #3
      Habe die Lösung gefunden.

      Es gibt zwei Möglichkeiten:
      Code:
      SELECT TABLE.* FROM TABLE WHERE (to_char(TEXT) = 'ein Text')
      oder
      Code:
      SELECT TABLE.* FROM TABLE WHERE dbms_lob.instr(TEXT, 'ein Text', 1, 1) > 0
      Hier bekomme ich allerdings nicht nur die genauen Ergebnisse, sondern auch Einträge, in dieser Art: '... ein Text ...'
      Deshalb habe ich mich für die erste Möglichkeit entschieden.

      Comment


      • #4
        Muss es denn CLOB sein? VARCHAR unterstützt bis zu 4000 Zeichen und lässt sich wesentlich besser handeln als CLOB

        Die Länge die man angibt ist Speicherplatzechnisch egal. Wenn man weniger als 4000 Zeichen als Grenze angibt, dann legt die DB nur einen Constraint an der prüft ob die Länge eingehalten wird.

        Comment

        Working...
        X