我正在使用update命令将列从一个sql表迁移到另一个sql表。使用以下查询进行更新时,我会获得ORA-01722: invalid number error
。问题是项目表中的PID
字段具有varchar2数据类型,docmeta表中的xproject_id具有数字数据类型。我现在有什么选择来迁移这些数据。
BEGIN
FOR X IN(select projecttype,pid from PROJECT)
loop
update docmeta d
set d.xProjectType=X.projecttype
where d.xproject_id=X.PID
and X.projecttype is not null;
END LOOP;
END;
答案 0 :(得分:1)
您可以捕获异常:
begin
for x in (select projecttype
,pid
from project
where procecttype is not null)
loop
begin
update docmeta d
set d.xprojecttype = x.projecttype
where d.xproject_id = x.pid;
exception
when others then
if sqlcode = -1722
then
null;
else
raise;
end if;
end;
end loop;
end;
另请注意,我已将非null项目类型的过滤器移动到查询。