怎样同时对两个数据表进行插入?----用存储过程实现

awen177 2006-11-21 03:52:52
我需要在一个函数中同时对两个数据表进行插入,当有一个插入不成功时就需要回滚,这个函数该怎么写呢?这个功能在sql server中的我会做,但在oracle中还不会,由于很急,请能解决的高人给出示例代码,在线急等!!!
...全文
173 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
awen177 2006-11-21
  • 打赏
  • 举报
回复
谢谢icedut的热心帮助,看来我还得多学学oracle语法啊,100分全给你
icedut 2006-11-21
  • 打赏
  • 举报
回复
--你试试看
CREATE OR REPLACE procedure ll_04 is
begin
insert to table1 ....
IF SQL%ROWCOUNT = 0 --sql影响记录数
then
ROLLBACK;
end if;

insert to table2 ....
IF SQL%ROWCOUNT = 0 --sql影响记录数
then
ROLLBACK;
end if;
insert to table3 ....
IF SQL%ROWCOUNT = 0 --sql影响记录数
then
ROLLBACK;
end if;
COMMIT;

EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
ROLLBACK;
end ll_04;
icedut 2006-11-21
  • 打赏
  • 举报
回复
上面错了
insert to table1 ....
IF SQL%ROWCOUNT = 0 --sql影响记录数
then
ROLLBACK;
end if;
icedut 2006-11-21
  • 打赏
  • 举报
回复
insert to table1 ....
IF SQL%ROWCOUNT = 0 --sql影响记录数
then
ROLLBACK;
en dif;
awen177 2006-11-21
  • 打赏
  • 举报
回复
难道没人愿意回答这个弱弱的问题么?
awen177 2006-11-21
  • 打赏
  • 举报
回复
可能我没说明白吧,我是要实现类似sql server中这样的功能:
CREATE PROCEDURE xxxx
(xx
..
xx)
AS

BEGIN TRAN
insert to table1 ....
IF (@@ERROR <> 0)
begin
rollback tran
return -1
end
insert into table2 ...
IF (@@ERROR <> 0)
begin
rollback tran
return -1
end


COMMIT TRAN

if @@Error <> 0
Return -1
Else
Return 0


GO

类似这样的功能在oracle中怎么实现?
chd2001 2006-11-21
  • 打赏
  • 举报
回复
INSERT ALL
INTO table_1 (id, name)
values(id,name)
INTO table_2 (id, name)
values(id,name)
INTO table_other (id, name)
values(id, name)
SELECT id,name
FROM a;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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