如果我有两个结构相同的表--一个在informix中,另一个在oracle db.and中--我想将照片从informix迁移到oracle,所以我使用oracle网关来实现这个迁移,但是它失败了,我得到了以下错误:
SQL错误: ORA-00997:非法使用长数据类型00997。00000 -“非法使用长数据类型”
我的问题是:
INSERT INTO EMPPHOTO (EMP_NUM,EMP_PIC,THUMB)
SELECT "emp_num","emp_pic","thumb" FROM "empmaster1pics"@GMR;其中EMPPHOTO (甲骨文表)和EMP_PIC --->BLOB
和
empmaster1pics (informix )和emp_pic --->Byte
发布于 2016-06-08 11:35:02
您正在执行从Informix数据类型到Oracle的隐式转换。但是带着一张遥控器,这是显式等价的。
您应该能够使用PL/SQL游标来实现这一点,将查询和insert分隔开来:
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;
/我没有要验证的Informix数据库,但它使用的是指向Oracle数据库的链接和带有long raw列的表,后者与您的byte列最接近,与原始代码获得相同的ORA-00997。(但表中只能有一个long raw列,所以我只能使用emp_pic或thumb进行测试,而不是两者都进行测试)。
https://stackoverflow.com/questions/37698716
复制相似问题