首页 > 开发 > 综合 > 正文

性检查的简单快捷方法(利用Post方法和Timer)

2024-07-21 02:35:39
字体:
来源:转载
供稿:网友

  1 前言
  唯一值检查,在许多人眼中是一个简单而又不能再简单的问题,但是FORMS中,由于OracleD
  eveloper体系架构的问题,成为开发人员的一块心病。
  当然,进行唯一值检查的方式多种多样,包括对数据块的轮询或利用表变量实现,但这些方
  法都有相同的弊病=>效率低下和实现方法过于繁杂。
  本文利用FORMS的POST命令和后台Select Count语句实现唯一值检查,为各位同仁提供多一种选择的余地。
  
  2 技术要点
  2.1 POST
  POST命令间将前台的数据传到后台,但是不进行COMMIT动作,由于在同一个SEASON,所以Select Count语句可以对未Commit_form的数据进行检查
  
  2.2 受限过程的解决方法
  由于POST是受限过程,无法在BLOCK的When_Valid_Record中使用,本文利用Timer实现POST过程。
  即:When_Valid_Record创建Timer,由Timer执行POST的动作。
  
  2.3 Select Count
  此语句不必多说,就是判定某数据是否重复
  
  3 实例参考
  3.1 创建数据表
  create table TESTCHECKUNIQUE
  (
  T1 VARCHAR2(20) PRimary Key,
  T2 VARCHAR2(20)
  );
  --设定T1为要检查的唯一值
  
  3.2 FORMS
  3.2.1 创建表级的When_Timer_EXPired,对数据进行POST动作
  Declare
  Begin
  IF Upper(Get_application_Property(TIMER_NAME)) = Upper('Timer_Post') THEN
  Post;
  END IF;
  End;
  
  3.2.2 创建数据块级的When_Valid_Record,创建Timer
  Declare
  Timer_Post Timer;
  Begin
  Timer_Post:=Create_Timer('Timer_Post', 5, NO_REPEAT);
  End;
  
  3.2.3 创建数据项级的When_Valid_Item,对数据进行检查性检查
  Declare
  L_Count Number;
  Begin
  Select Count(0)
  Into L_Count
  From TestCheckUnique
  Where T1=:TestCheckUnique.T1;
  If L_Count>0 Then
  Message('字段输入重复值');
  Raise Form_Trigger_Failure;
  End If;
  End;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表