2016-06-08 6 views
0

Wenn ich zwei Tabellen mit der gleichen Struktur einer in informix und die andere in oracle db.and i die Fotos informix-oracle migrieren möchten so i verwenden sie den oracle-Gateway diese Migration zu erreichen, aber es scheiterte und ich erhalte den folgenden Fehler:illegale Nutzung von LONG-Datentyp 00997. 00000 - „illegale Nutzung von LONG-Datentyp


SQL Error: ORA-00997: illegal use of LONG datatype 00997. 00000 - "illegal use of LONG datatype"


Meine Suche:

INSERT INTO EMPPHOTO (EMP_NUM,EMP_PIC,THUMB) 
SELECT "emp_num","emp_pic","thumb" FROM "empmaster1pics"@GMR; 

Wo EMPPHOTO (Oracle-Tabelle) und EMP_PIC --->BLOB

und

empmaster1pics (Informix-Tabelle) und emp_pic --->Byte

Antwort

1

Sie eine implizite conversion aus dem Informix-Datentyp einen Oracle zu tun. Aber you can't use to_lob() with a remote table, das ist das explizite Äquivalent.

Sie sollten in der Lage sein, diese Cursor mit einer PL/SQL zu erreichen, um die Abfrage zu trennen und der Einsatz:

begin 
    for rec in (
    select "emp_num", "emp_pic", "thumb" 
    from "empmaster1pics"@GMR 
) 
    loop 
    insert into empphoto (emp_num, emp_pic, thumb) 
    values (rec."emp_num", rec."emp_pic", rec."thumb"); 
    end loop; 
end; 
/

Ich habe nicht eine Informix-Datenbank, um zu überprüfen, aber es funktioniert, um mit einem Link eine Oracle-Datenbank und eine Tabelle mit einer Spalte long raw, die der Spalte byte am nächsten kommt und die gleiche ORA-00997 mit Ihrem ursprünglichen Code erhält. (Außer Sie können nur eine long raw Spalte in einer Tabelle haben, so dass ich nur mit emp_pic oder thumb testen konnte, nicht beide).

+0

es funktioniert wie magisch: D –

+1

@AnynameDonotcare - Ich hatte einen Platzhalter Null in dem, was ich gepostet, aus dem Testen mit der Single-lange Oracle Link; hoffentlich hast du das entdeckt und du hast keine ladung von null-werten in deine emp_pic-spalte eingefügt ... –

+1

Nein, ich benutze "emp_pic" und alles geht gut, vielen dank: D –