如何解决如何使用oracle中的游标将源表中的多行插入目标表中的单行[重复]
| 这个问题已经在这里有了答案:解决方法
程序方法
DECLARE
type pv_ref_t is TABLE of pv_cus.pv_ref%type;
type pv_text_t is TABLE of pv_cus.pv_text%type;
v_pv_ref_tab pv_ref_t;
v_pv_text_tab pv_text_t;
v_last_pr_ref pr_info.pr_ref%type;
BEGIN
v_pv_ref_tab := pv_ref_t();
v_pv_text_tab := pv_text_t();
FOR rec in (SELECT pr_ref,pr_text FROM pr_info order by pr_ref,pr_key)
LOOP
IF v_last_pr_ref IS NULL
OR v_last_pr_ref != rec.pr_ref
THEN
v_last_pr_ref := rec.pr_ref;
v_pv_ref_tab.extend(1);
v_pv_text_tab.extend(1);
v_pv_ref_tab(v_pv_ref_tab.last) := rec.pr_ref;
v_pv_text_tab(v_pv_text_tab.last) := rec.pr_text;
ELSE
-- tbd: check length of v_pv_text_tab(v_pv_text_tab.last)
v_pv_text_tab(v_pv_text_tab.last) := v_pv_text_tab(v_pv_text_tab.last) || \',\' || rec.pr_text;
END IF;
END LOOP;
FORALL i in 1..v_pv_ref_tab.last
INSERT INTO pv_cus (pv_ref,pv_text) VALUES(v_pv_ref_tab(i),v_pv_text_tab(i))
;
END;
/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。