导航
  • 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流
  • 问答

如何建立一个基于事务的存储过程?

南飞雁 2003-07-24 08:30:39
oracle里面有些存储过程是基于事务的,比如dbms_job,有些不是,比如utl_file。
我想创建一个自己的基于事务的存储过程,也就是说,当在触发器里面调用此存储过程的时候,只有commit的时候才调用此存储过程。
用pl/sql,java或者c写的存储过程都可以。
...全文
109 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiezhi 2003-07-25
就是說有的是隱含提交的,有的則是必須顯示提交。
但你的是否調用存儲過程和是否提交沒有直接的關系,但你可以根據發生的變化來判斷是否已經提交了。
回复
南飞雁 2003-07-25
to jiezhi(浪子) :能否举个例子
回复
南飞雁 2003-07-24
“只有commit的时候才调用此存储过程。??
不明白,调用了就调用了,commit是使修改永久化,就象一条sql语句一样,你不能等你commit时才执行这条语句吧”
比如执行dbms_job.submit(...)以后,只有执行了commit,这条语句才会放到job queue里面等待执行,如果没有执行commit,你在user_jobs里面是看不到这个job的。但是如果你执行了util_file的写文件操作,即使你没有执行commit,文件实际上也已经被改写了。
不知道我说的意思你理解了没有?
回复
more_zou 2003-07-24
事实上如果你不在过程中加事务语句的话(commit rollback),oracle把存储过程调用看作是一条原子语句,oracle会在调用过程前隐式加上一个savepoint
也就是如果你调用此过程的事务commit,就会提交,rollback过程中的执行也会回滚

只有commit的时候才调用此存储过程。??
不明白,调用了就调用了,commit是使修改永久化,就象一条sql语句一样,你不能等你commit时才执行这条语句吧

我的一点理解,欢迎指正!
回复
发动态
发帖子
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
社区公告
暂无公告