17,086
社区成员
发帖
与我相关
我的任务
分享
create or replace procedure pro_fp is
begin
Declare
CURSOR bcur
IS SELECT sessionid,transcript from of.fpsession where rownum<15;
brec bcur%ROWTYPE;
BEGIN
-- insert into testlong1(id,name) select id,name from testlong;--其它类型先插入
OPEN bcur;
LOOP
FETCH bcur INTO brec;
EXIT WHEN bcur%NOTFOUND;
update of.fpsession_3 set transcript=brec.transcript where sessionid=brec.sessionid;
commit;
END LOOP;
CLOSE bcur;
END;
end pro_fp;
where sessionid=brec.sessionid
--应该是这两个sessionid的类型不一样
brec.sessionid --这个是varchar2
sessionid --这个是 number
--oracle执行计划会做隐式类型转换为
where sessionid= to_number(brec.sessionid)
--这样 一但你的 brec.sessionid 里面保存有非数字字符就会报你这个错误。