Oracle Formで自動番号(行番号)の機能を実装する方法

1797 ワード

メソッド1、「シーケンス番号」を式として定義し、式をget_に設定するだけです.block_property('block_name',current_record)を実装するか、この行の文を「When-CReate-REcord」トリガに配置します.欠点:削除を追加すると、行番号が自動的に更新されません.
方法2、blockの3つのトリガに対応するコードを追加する:Key-CRerec:
DECLARE LINE NUMBER; BEGIN LINE := :SYSTEM.CURSOR_RECORD; LOOP  IF :SYSTEM.LAST_RECORD = 'TRUE' THEN 
 EXIT;  ELSE NEXT_RECORD; :blk.ID := :SYSTEM.CURSOR_RECORD + 1;  END IF;  END LOOP; GO_RECORD(LINE); CREATE_RECORD; :blk.ID := :SYSTEM.CURSOR_RECORD; END;

Key - Delrec:
DECLARE LINE NUMBER; BEGIN DELETE_RECORD; LINE := :SYSTEM.CURSOR_RECORD; LOOP :blk.ID := :SYSTEM.CURSOR_RECORD;  IF :SYSTEM.LAST_RECORD = 'TRUE' THEN 
 EXIT;  ELSE NEXT_RECORD;  END IF;  END LOOP; GO_RECORD(LINE); END;

When - Create - Record:
:blk.ID := :SYSTEM.TRIGGER_RECORD;

欠点:記録数の少ないtableに適用し、tableに記録が多い場合、ループ操作を使用するため効率に影響します.F 11でもシーケンス番号が生成されないように、クエリに影響を与えるために、生成前にIF(:SYSTEM.MODE!=‘ENTER-QUERY’)THENを加えることができます.