Capture bulk fetch error

todayandtomorrow 2009-08-12 10:21:45
小弟最近遇到一个问题,如下描述:

有两个表,一个是数据表 start_tbl(有几千行数据),一个是最终表final_tbl(可能有数据)。
现在想把start_tbl表中得数据插入到final_tbl表中。但是start_tbl和final_tbl结构有一定得差距,比如start_tbl中列得大小比final_tbl中得大。假设start_tbl表中有id和name两列。

我采用得方法是:

produre SW_IN_FINAL
is
type t_id is table of final_tbl.id&type index by binary_integer;
v_id t_id;
type t_name is table of final_tbl.id&type index by binary_integer;
v_name v_name;
type T_SEL_CUR is ref cursor;
CUR_GET_RECORDS T_SEL_CUR;

v_sql long;
begin

v_sql = 'select id, name from start_tbl';

open CUR_GET_RECORDS for v_sql;

fetch CUR_GET_RECORDS bulk collect into
v_id,
v_name
limit 100;
。。。。。。
(以下省略插入语句)
end SW_IN_FINAL;

问题是在fetch数据进v_id和v_name得时候可能产生错误,如何获取这种错误,并让程序继续进行而不因错误而终止。
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oracledbalgtu 2009-08-14
  • 打赏
  • 举报
回复
把 v_sql = 'select id, name from start_tbl'; 语句改造成类似如下sql:
v_sql = 'select substr(id,1,10), substr(name,1,10) from start_tbl';



[Quote=引用楼主 todayandtomorrow 的回复:]
小弟最近遇到一个问题,如下描述:

有两个表,一个是数据表 start_tbl(有几千行数据),一个是最终表final_tbl(可能有数据)。
现在想把start_tbl表中得数据插入到final_tbl表中。但是start_tbl和final_tbl结构有一定得差距,比如start_tbl中列得大小比final_tbl中得大。假设start_tbl表中有id和name两列。

我采用得方法是:

produre SW_IN_FINAL
is
  type t_id is table of final_tbl.id&type index by binary_integer;
  v_id t_id;
  type t_name is table of final_tbl.id&type index by binary_integer;
  v_name v_name;
  type T_SEL_CUR      is ref cursor;
  CUR_GET_RECORDS      T_SEL_CUR;
 
  v_sql long;
begin
 
  v_sql = 'select id, name from start_tbl';

  open CUR_GET_RECORDS for v_sql;

  fetch CUR_GET_RECORDS bulk collect into
            v_id,
            v_name
  limit 100;
  。。。。。。
  (以下省略插入语句)
end SW_IN_FINAL;

问题是在fetch数据进v_id和v_name得时候可能产生错误,如何获取这种错误,并让程序继续进行而不因错误而终止。

[/Quote]
inthirties 2009-08-14
  • 打赏
  • 举报
回复
type t_name is table of final_tbl.id&type index by binary_integer;

把后面的 index by binary_integer去掉试试。
gaijf 2009-08-13
  • 打赏
  • 举报
回复
为什么只能用这种方法?
todayandtomorrow 2009-08-12
  • 打赏
  • 举报
回复
感谢楼上回帖,但是我只能用这种方法,因为其实数据比较多,我只是举个列子而已。。。
hongqi162 2009-08-12
  • 打赏
  • 举报
回复
使用insert into ...select...不可以么?这样的话你就可以在select里面对字段的值进行处理了

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧