小弟之前一直是用SQL SERVER ,最近公司项目要用ado.net 访问Oracle 数据库。遇到问题:
我想一次性在数据库插入多条数据,需求是这样的。
先通过 select fab_combo_seq.nextval from dual 触发器创建一个ID,
然后取到这个ID 写一条插入
Insert into....
以前在SQL直接就拼好一个事务的语句丢到数据库执行即可
begin tran
declare @id bigint,@err int
select @id=id from table1
insert into table2 values(@id,'aa')
set @err+=@@error
select @id=id from table1
insert into table2 values(@id,'bb')
set @err+=@@error
...此处省略N行
if(@err<>0)
begin
commit tran
end
else
begin
rollback tran
end
现在在Oracle该怎么实现呢?想一次性拼好语句一次执行,以减少流量。请教Oracle高手
------解决思路----------------------
declare
m_id int;
m_str varchar2(30);
begin
select fab_combo_seq.nextval into m_id from dual ; -- 这样写
insert into t (id) values (m_id);
commit ; -- 显式的提交
exception
when others then
rollback ; -- 显式的让这个事务回滚
m_str = '发生了错误';
end;