Announcement

Collapse
No announcement yet.

utl_raw.cast_to_varchar2

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

  • utl_raw.cast_to_varchar2

    Hallo Zusammen,

    ich habe ca. 680 Eingabedateien in meinen Ordner.
    Lade nun jede Datei einzeln in bfile.
    Erzeuge ein Log wo die Datengrösse angezeigt wird
    "e_file_length := dbms_lob.getlength(e_file)"
    Öffne die Datei
    "dbms_lob.fileopen(e_file, dbms_lob.file_readonly)"
    und lese 500 Bytes
    "dbms_lob.read(e_file, e_lang_500, 1, e_raw_500".
    Wandle RAW in VARCHAR2
    "e_byte_500 := utl_raw.cast_to_varchar2(e_raw_500)"
    in Log anzeigen

    Nun das Problem :
    ab der 5 Datei werden nur noch 48 Bytes anstatt 500 Bytes zurückgeben.
    Kann es sein, dass die RAW Vaiable initalisert werden muss ?

  • #2
    Habe das Problem jetzt gelöst :
    IF e_file_length >= 500 THEN
    dbms_lob.read(e_file, e_lang_500, 1, e_raw_500); -- 500 Byte
    ELSE
    dbms_lob.read(e_file, e_file_length, 1, e_raw_500); -- Satzlaenge
    END IF;
    Ist die Datelänge kleiner 500 dann lese nur die Anzahl der Zeichen.
    Frage mich nur, wenn das Empfangsfeld "e_raw_500" Type RAW(500) ja jeweils gleich ist,
    warum es jetzt funktioniert !

    Comment


    • #3
      Frage mich nur, wenn das Empfangsfeld "e_raw_500" Type RAW(500) ja jeweils gleich ist, warum es jetzt funktioniert !
      Was hat vorher nicht funktioniert? Wenn weniger als 500byte zu lesen sind, dann werden eben auch weniger gelesen. Ich versteh nicht, wo hier das Problem liegen soll.

      Dim

      PS: CODE Tags erleichtern das Lesen ungemein, des weiteren solltest Du auch deine Variablen für uns deklarieren - wir sehen den Rest Deines Quellcodes nicht.
      Zitat Tom Kyte:
      I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

      Comment


      • #4
        Hallo dimitri,
        Das Problem war, dass nachdem einmal weniger als 500 Bytes ausgelesen wurden, z.B. nur 48 Bytes, alle folgenden Dateien nur mit 48 Bytes ausgelesen wurden, obwohl mehr als 48 Bytes verfügbar waren

        Comment

        Working...
        X