首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用集合更新数据时出错,但可以插入

使用集合更新数据时出错,但可以插入
EN

Stack Overflow用户
提问于 2014-05-22 15:29:56
回答 1查看 28关注 0票数 0
代码语言:javascript
运行
复制
create or replace function get_ware_house_branch(p_WAREHOUSE_IDS  in varchar2,
 p_PLACE_ID       in varchar2)
  return id_warehouse_list                     
 is
   l_warehouse_list id_warehouse_list := id_warehouse_list();
  str varchar2(300);

begin

  str := 'SELECT BRANCH_WAREHOUSE(w.wh_id, w.wh_name)
              FROM POD_WAREHOUSE_MASTER W
              where ( W.wh_id  IN  (' ||p_WAREHOUSE_IDS  || '))';

  execute immediate str bulk collect into l_warehouse_list;

  for i in l_warehouse_list.first..l_warehouse_list.last loop 
      dbms_output.put_line(l_warehouse_list(i).wh_id || ', ' ||  l_warehouse_list(i).wh_name);


/*update pod_place_warehouse_mapping_tb 

 set wh_id = l_warehouse_list(i).wh_id 

 where place_id =  p_PLACE_ID ;*/


insert into pod_place_warehouse_mapping_tb (id,place_id ,wh_id )
    values
 (POD_UNIQUE_VAL_SEQ.NEXTVAL    ,p_PLACE_ID,l_warehouse_list(i).wh_id);

end loop;

commit;
 return l_warehouse_list;
end;
EN

回答 1

Stack Overflow用户

发布于 2014-05-22 19:39:45

您看到的结果正是被注释掉的UPDATE语句告诉您要做的事情。在update情况下,您可以用一条update语句替换循环:

代码语言:javascript
运行
复制
UPDATE POD_PLACE_WAREHOUSE_MAPPING_TB
  SET WH_ID = l_warehouse_list(l_warehouse_list.LAST).WH_ID
  WHERE PLACE_ID = p_PLACE_ID

上面的循环和UPDATE语句将产生完全相同的结果。在循环示例中,您将使用l_warehouse_list中的每个值逐个更新POD_PLACE_WAREHOUSE_MAPPING_TB中的所有行。循环完成后,POD_PLACE_WAREHOUSE_MAPPING_TB中所有具有PLACE_ID = p_PLACE_ID的行将其WH_ID列设置为具有最高索引的l_warehouse_list元素的WH_ID值。

我不知道你还想要什么结果。我认为你需要重新思考你想要做的是什么。

祝你好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23800402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档