写完一句,就execute一句。最后来给commit。jdbc缺省就是操作语句不更新,当你statement关闭或者commit才提交数据库。
解决方案 »
- oracle中创建一个用于求1到10的和的存储过程,但形参似乎不能赋值
- oracle中是否存在与informix中“$set lock mode to wait 10;”等效的使用方法?
- 存储过程如何在jsp中掉用
- jsp页面实现时间参数传递出现ORA-01861: 文字与格式字符串不匹配错误
- oracle的数据备份的大小是不是和它的tablespace的大小有关?
- oracle 设置系统参数问题 alter system set UTL_FILE_DIR= 发现参数没变化
- 高分求救ORACLE故障
- 如何删除aix4.3下的oracle7.3.4实例!目的:不重装系统、oralce,重建一个新库。
- 提个问题
- PL/SQL Developer 打不开存诸过程,紧急求助
- 第一次装oracle9i就遇到奇怪问题:最后自动配置工具(database configuration assistant)时,既不报错,进程也没死,但就是不往前走了!
- oracle 培训教材 习题 寻求答案 (5)
sql = "begin tran";
sql += " update t1 ...";
sql += " insert t2 ...";
sql += " delete t3 ...";
sql += " commit tran"
dbconn.executeQuery(sql);oracle中:用过程吧.
create or replace procedure proc_name
sql varchar2(200);
begin
sql:='update....';
execute immediate sql;
sql:='insert into ...';
execute immediate sql;
sql:='delete...';
execute immediate sql;
commit;
exception
when others then
rollback;
end ;
我每条语句后面还有好多的参数呢,如条件什么的,那不是要传好这些参数进去?我系统中有大量的需要几条语句捆绑在一起执行的地方,如循环插入等,如果都要写成过程太麻烦了,请教有没有其他的办法,在程序中控制这些语句执行的事务。
我在java中,不知道如何解决,谢谢。
create or replace procedure proc_name(p_in in varchar2) <---参数
sql varchar2(200);
begin
sql:='update......where Name= '||p_in ;
execute immediate sql;
...为了保持事务一致,一次提交.出错回滚.写成循环也一样./
insert into ...;
update ....;
end;';
execute immediate str_sql;
如果不行的话
写一个公用的存储过程
专门执行动态pl/sql块或动态sql语句的,
把语句写好,然后调用存储过程即可。
谢谢,我的程序中需要这样事务处理的地方不下百个,有些是很简单的,如:
delete t1 where id = 1
delete t2 where id = 1
写成过程工作量比较大了。如果直接在前台程序中一起执行这两条,那会轻松好多,我的程序都是从sqlserver移植到oracle中的。我先去试试,看程序中行不行。
sql = "insert into test(a,b) values(1,'a')";
dbconn.executeUpdate(sql);
sql = "insert into test(a,b) values('a','a')";
dbconn.executeUpdate(sql);
这样不插入了第一条,不行啊,因为第二条出错,我要回滚才可以。
sql = "begin
insert into test(a,b) values(1,'a');
nsert into test(a,b) values('a','a');
exception when others then
rollback;
end;";
dbconn.executeUpdate(sql);
sql = "begin
insert into test(a,b) values(1,'a');
nsert into test(a,b) values('a','a');
exception when others then
rollback;
end;";
dbconn.executeUpdate(sql);--
to bzszp(SongZip) :
谢谢,还真得可以了,老大非常感谢啊,又解决了我一大难题!!!
sql = "insert into test(a,b) values(1,'a')";
dbconn.executeUpdate(sql);
sql = "insert into test(a,b) values('a','a')";
dbconn.executeUpdate(sql);
这样不插入了第一条,不行啊,因为第二条出错,我要回滚才可以
==============
在catch中dbconn回滚,没问题。