求Oracle一存储过程

beijingpz 2008-11-18 08:44:54
有A、B、C三张表,要将A表中的数据通过检索条件检索出结果,将结果插入到B表的相应字段,同时插入C表某一字段,然后更新A表中的某一字段值,本人初学Oracle,望各位大侠不吝赐教,谢谢!
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
justjyq 2008-11-18
  • 打赏
  • 举报
回复
DECLARE
A EXCEPTION;
BEGIN
IF....
RAISE A;
END IF;
EXCEPTION
WHEN A THEN
DOSOMETHING;
WHEN NO_DATA_FOUND THEN
DOSOMETHING;
WHEN TOO_MANY_ROWS THEN
DOSOMETHING;
WHEN OTHERS THEN
DOSOMETHING;
END;
beijingpz 2008-11-18
  • 打赏
  • 举报
回复
感谢两位大侠的回答,但是异常怎么处理呢?谢谢
codearts 2008-11-18
  • 打赏
  • 举报
回复
感觉无法用一个sql来实现

1) 用insert all。 可以实现将结果插入到B,同时插入C
INSERT ALL
WHEN ottl < 100000 THEN
INTO small_orders
VALUES(oid, ottl, sid, cid)
WHEN ottl > 100000 and ottl < 200000 THEN
INTO medium_orders
VALUES(oid, ottl, sid, cid)
WHEN ottl > 200000 THEN
into large_orders
VALUES(oid, ottl, sid, cid)
WHEN ottl > 290000 THEN
INTO special_orders
SELECT o.order_id oid, o.customer_id cid, o.order_total ottl,
o.sales_rep_id sid, c.credit_limit cl, c.cust_email cem
FROM orders o, customers c
WHERE o.customer_id = c.customer_id;

2)再更新A表,看来是要再update一次了
horizonlyhw 2008-11-18
  • 打赏
  • 举报
回复

for rec in
(
select * from A where ……
)
loop
insert into B(……) values (rec.你要的字段,rec.你要的字段) where ……;
insert into C(……) values (rec.你要的字段,rec.你要的字段) where ……;
update A;

end loop;

17,090

社区成员

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

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