Oracle Form 中 COMMIT 的使用

1. COMMIT_FORM

先针对form上面的数据变动进行commit,然后对于代码中的类似DML语句也进行提交;

如果form上面的数据变动和代码中的数据变动有冲突,最后以FORM上的为准。

适用:一般来在直接修改FORM上的数据,就使用commit_form。

2.COMMIT

form和数据库进行提交。如果form上面的数据和代码中的数据变动有冲突,最后以FORM上的为准。

适用:一般来在直接使用DML代码修改数据时,就使用commit。

3. DO_KEY('COMMIT_FORM')

它会首先寻找form下的triggers中的KEY-COMMIT触发器,并执行KEY-COMMIT触发器里面的代码,如果没有这个触发器,则会做COMMIT_FORM一样的操作。

适用:只是更改了一下代码执行的先后顺序,没有什么实质区别。

4. FORMS_DDL('COMMIT')

只针对代码中insert、update、delete语句进行提交,form上面的数据不提交。

适用:一般不用。

DG 里面提到:

Replace COMMIT with do_key('commit_form'), This routine raises the exception FORM_TRIGGER_FAILURE if there is an invalid record.

COMMIT时触发器执行顺序:

(1).KEY-COMMIT

(2).PRE-COMMIT

(3).PRE/ON/POST DELETE

(4).PRE/ON/POST UPDATE

(5).PRE/ON/POST INSERT

(6).ON-COMMIT

(7).Post DataBase Commit

5. QUIETCOMMIT

oracle form "悄悄" 提交。如果使用commit_form的话会弹出信息提示"没有修改需要保存"或者"XXX记录已保存"。如果你不想提示出现,则可以调用函数

app_form.quietcommit。由于是一个function, 所以需要定义一个变量用来接收返回值, 返回值类型为boolean,当true的时候就说明成功, 否则commit失败。

将系统的消息级别改为较低级别也可调用如下过程:

PROCEDURE docommit IS
  old_level VARCHAR2(2);
BEGIN
  old_level := name_in('system.message_level');
  copy('5', 'system.message_level');
  COMMIT;
  copy(old_level, 'system.message_level');
END;

 

 

转载于:https://www.cnblogs.com/Cqiang/archive/2013/03/06/2945519.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值