tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von saftmeister
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
435
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    Hi,

    ich habe hier eine kleine PHP Anwendung die im Backend auf eine Oracle 10g Datenbank zugreift. Ich verwende ADODB in der aktuellen Version zur Verbindung von PHP & Oracle.

    Seit ein paar Tagen stehe ich nun vor einem Problem dessen Lösung ich einfach nicht finde. Ich versuche einen String mit mehr als 4000 Zeichen in die Datenbank zu schreiben. Das Feld ist vom Typ CLOB und sollte daher damit keine Probleme haben. Ich erhalte jedoch immer den Fehler "ORA-01704: string literal too long". Datensätze unter 4000 Zeichen sind kein Problem.

    Kann mir jemand sagen ob ich ADODB erst mit meinen CLOB's bekannt machen muss und wenn ja wie das geht?
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hallo,

    ich kenne ADODB jetzt grad nicht, unterstützt das Prepared Statements? Laut einem Foren-Eintrag im Orakel-Forum darf man davon ausgehen, das man (zu mindest bei CLOB) kein dynamisches Statement benutzen sondern statt dessen die Variable binden muss, die den Inhalt darstellt. Ich beziehe mich auf diesen Posting:

    Zitat Zitat von https://forums.oracle.com/forums/message.jspa?messageID=3287156#3287156
    String literals in SQL are limited to 4000 characters. Your dynamic SQL is trying to concatenate the CLOB as part of the SQL statement, turning it into a string literal. If dynamic SQL were required, you'd need to use bind variables, i.e.

    EXECUTE IMMEDIATE 'INSERT INTO some_table( clob_column ) VALUES( :1 )' USING p_clob_parameter



    Of course, you'd also want to use bind variables for performance and security.
    Das bedeutet, man müsste den Code zu Prepared Statements umbauen weil Binding nur dort zu bewerkstelligen ist.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    Hi!

    danke für deine Antwort. Bei meinem alten (selbst geschriebenen) DB abstraction layer hatte ich das auch über bindings (empty_clob etc) implementiert. Bei der aktuellen Anwendung ist ADODB als DB Zugriffsschicht leider gegeben und grundsätzlich schreibt ADODB ja auch in clob felder - behandelt sie scheinbar aber wie varchars
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hast du es schon mit PS probiert? Hier im Manual hab ich ein Beispiel gefunden: http://phplens.com/lens/adodb/docs-adodb.htm#bind

    Damit müsste es doch funktionieren.
    südpol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    Hi,

    hab einen ähnlichen Weg in der Doku gefunden:

    http://phplens.com/adodb/reference.f...pdateclob.html

    Damit geht zwar für die Queries mit CLOB's die Fähigkeit flöten mit anderen DBMS Systemen zusammen zu arbeiten aber damit kann ich erst mal gut leben.

    Danke
     

Ähnliche Themen

  1. $().appendTo() Firebugmeldung: unterminated string literal
    Von BlubBlub im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 28.03.11, 15:52
  2. Unterminated literal string - hilfe :(
    Von Nizomi im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 30.01.08, 11:04
  3. ORA 01704 - String literal too long
    Von dasago im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 02.05.07, 10:06
  4. String in Long umwandeln
    Von chickenwings im Forum Java
    Antworten: 4
    Letzter Beitrag: 06.10.06, 15:14
  5. Line too long (5kb --> String)
    Von Arne Buchwald im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 02.06.02, 22:02

Stichworte