2016-03-23 4 views
-1

Ich arbeite an einem vorhandenen Projekt und muss DML für die Oracle-Datenbank vorbereiten. Aber ich bin nicht in der Lage, für eine Insert-Anweisung für Blob-Daten aufgrund der riesigen Größe vorzubereiten, die größer als 4000 Bytes ist. Kann mir jemand helfen?Oracle-BLOB-Daten größer als 3200 können nicht eingefügt werden, indem die Anweisung "Insert" verwendet wird.

N.B: Ich habe diesen Fehler, ORA-06550: String Literal zu lang.

Nur INSERT-Anweisung, kein Java-Programm. Ich brauche es nur, um eine DML-ähnliche Insert-Anweisung vorzubereiten.

Mein INSERT STATEMENT:

INSERT INTO APP_PROF('ID', 'IMAGE') VALUES('2', TO_BLOB('4654655665....')) 

Dieses Bild Blob-Daten größer als 45000bytes

Vielen Dank im Voraus.

+0

können Sie nicht tun, ohne Teil des Programmcodes. Oracle erlaubt keine Literale länger als 4000 Bytes (oder 32k seit Oracle 12) –

Antwort

1

Ja. Verwenden Sie Stream, nicht String/Byte-Array, um BLOB einzufügen. Etwas wie folgt aus:

PreparedStatement ps = conn.prepareStatement("insert into blobs (blob_value) values (?)"); 
InputStream in = new StringBufferInputStream(aLagrgeStringValue); 
ps.setBinaryStream(1,in,(int)in.length()); 
ps.execute(); 
+0

Ich benutze SQL-Entwickler, ich brauche nur in SQL-Insert-Anweisung keine Java-Sprache ist erlaubt. –

+0

Schauen Sie sich das DBMS_LOB-Paket an. https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_lob.htm –

0

Das Problem, das ich hier finde, ist, dass Sie String-Wert verwenden, in einer BLOB-Spalte und Fehler einzufügen, die Sie reciving ist die Begrenzungsfehler für die Eingabezeichenfolge und nicht die Blob-Spalte des Tisches.

Bitte beachten Sie den folgenden Link für weitere Erläuterungen.

How to convert VARCHAR2 to BLOB inside Oracle 11g PL/SQL after ORA-06502

+0

Ich habe eine Hex-Zeichenfolge innerhalb der Funktion TO_BLOB, so dass es keinen Fehler erzeugt. Seine Arbeit habe ich viele Reihe weniger als 4000bytes eingefügt. –

+0

@Md. Naushad Alam Das gleiche wird nicht für String-Länge größer als es maximale Größe, dh 4000 Bytes funktionieren und das ist der Fehler, den Sie empfangen. Um das Problem zu überprüfen, versuchen Sie, einen Blob aus einer anderen Tabelle mit mehr als 4000 Byte einzufügen – Hari

Verwandte Themen