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

南飞雁 2003-07-24 08:30:39
oracle里面有些存储过程是基于事务的,比如dbms_job,有些不是,比如utl_file。
我想创建一个自己的基于事务的存储过程,也就是说,当在触发器里面调用此存储过程的时候,只有commit的时候才调用此存储过程。
用pl/sql,java或者c写的存储过程都可以。
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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时才执行这条语句吧

我的一点理解,欢迎指正!

17,086

社区成员

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

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