zoukankan      html  css  js  c++  java
  • 在Oracle Form中,如何实现自动编号(行号)的功能

    方法一、

    只需要将序号定义成公式,并将公式设置为:get_block_property('block_name',current_record) 就可以实现了,或者把这行语句放到“When-Create-Record”触发器中。

    缺点:增改删时,行号不能自动刷新。

    方法二、

    block的三个触发器中添加相应的代码:

    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中的记录很多时,由于使用了循环操作,所以会影响效率。

             

                成长

           /      |     \

        学习   总结   分享

    QQ交流群:122230156

  • 相关阅读:
    模块和包专区
    递归函数,三级菜单专区
    内置函数和匿名函数专区
    迭代器和生成器专区
    函数进阶专区
    初始函数专区
    题解 P6282 【[USACO20OPEN]Cereal S】
    题解 P6281 【[USACO20OPEN]Social Distancing S】
    题解 P6281 【[USACO20OPEN]Social Distancing S】
    第5题:棋盘
  • 原文地址:https://www.cnblogs.com/benio/p/1990179.html
Copyright © 2011-2022 走看看