学习Oracle Form的一点笔记

这篇笔记详细介绍了Oracle Form的开发,包括数据块、Item的创建、属性复制、运行时属性设置、模块类型、数据库操作以及触发器等内容。还讨论了代码组织、数据库服务器与表单的交互、使用存储过程和触发器等核心概念。
摘要由CSDN通过智能技术生成

培养计划中还要掌握Form的开发,本以为就是Report稍微变更了一下,或者VB关联上数据库,但是实际却不是那么回事,很是不习惯。今天陆陆续续看了一些资料,零零碎碎的记了一些笔记,还是心中没底。

1、将相关项目组织成为功能单位。无物理表示方式,两种类型——数据块(与表或者视图相关)控制块。

2、在数据块中新建Item,默认与数据库相关,可以在属性数据库设置中可以设定不相关,同时可以在一般属性中设定这个Item的类型,是文本还是按钮等。在物理属性中设定这个Item属于哪个Canvas。

3、复制对象的时候会询问是拷贝还是创建子类。

4、拷贝属性——可以将一个属性值拷贝复制到另一个属性。
Properties -〉Copy Properties

5、使用Shift+双击可以打开第二个对象的属性面板,从而可以进行两个对象的比较。以此类推,N个都行。

6、可以在运行的时候设置对象的属性。以窗口对象为例,有Set_Window_Property('my_window',VISIBLE,PROPERTY_ON)在运行时设置窗口显示。同样有很多其他的一些内建过程、SET_BLOCK_PROPERTY、SET_CANVAS_PROPERTY、SET_FORM_PROPERTY、SET_ITEM_PROPERTY、SET_LOV_PROPERTY、SET_MENU_ITEM_PROPERTY、SET_PARAMETER_ATTR、SET_RADIO_BUTTON_PROPERTY、SET_RECORD_PROPERTY、SET_RELATION_PROPERTY、SET_VIEW_PROPERTY、SET_WINDOW_PROPERTY。其中,Set_Item_Property可以设置按钮、文本等任何类型的项目。

7、四种类型模块
有五种创建数据模块的方法,表、引用游标的过程、使用记录表的过程、事务触发器、FROM因子。可以通过Data Module Wizard修改这些设置。

8、至于具体数据项的对应通过属性“数据库”和“高级数据库”来设置。

1、基于过程的块
在包头中说明的过程,在包体中一定要定义,定义必须连参数的名称也必须一至。
在使用过程(procedure)建立数据块的时候,在包中分别建立查询、插入、更新、删除、锁定5个过程。用来操作数据。其中,查询的IN OUT的参数为REF CURSOR类型,而对表单记录的DML和加锁语句,IN OUT的参数为TABLE类型。

例子:
下面就是一个包中对记录进行查询和插入。
包头:
create or replace package test_emp_maint is
  -- Public type declarations
  TYPE emp_t IS RECORD(
       id test02.id%TYPE,
       name test02.name%TYPE,
       sex test02.sex%TYPE,
       age test02.age%TYPE,
       manager_id test02.manager_id%TYPE);

  --游标类型,用于查询参数    
  TYPE rc_emp IS REF CURSOR
       RETURN emp_t;
      
  --表类型,用于DML以及加锁
  TYPE t_emp IS TABLE OF
       emp_t
       INDEX BY BINARY_INTEGER;
      
  PROCEDURE slct(
           p_empqry IN OUT rc_emp);
          
  PROCEDURE ins(
           p_emprec IN OUT t_emp);           

end test_emp_maint;   
包体:
create or replace package body test_emp_maint is
   
  -- SELECT DATA
  PROCEDURE slct(
           p_empqry IN OUT rc_emp)
  IS
  BEGIN
    OPEN p_empqry
    FOR
        SELECT * from test02;
  END;
 
  -- INSERT DATA
 PROCEDURE ins(
           p_emprec IN OUT t_emp)   
  IS
    --v_message VARCHAR(100);
  BEGIN
    --v_message := 'INSERT INTO TABLES TEST02 RECORDS';
    For v_ct IN 1 .. p_emprec.count
    LOOP
   
    INSERT INTO test02(
           id,
           name,
           sex,
           age,
           manager_id)
    VALUES (
       p_emprec( v_ct ).id,
       p_emprec( v_ct ).name,
       p_emprec( v_ct ).sex,
       p_emprec( v_ct ).age,
       p_emprec( v_ct ).manager_id                                  
    );              
    END LOOP;       

  END;

END test_emp_maint;

2、当在数据块中设定插入、更新的相关属性之后,FORM BUILDER会自动创建INSERT-PROCEDURE/UPDATE-PROCEDURE/DELETE-PROCEDURE等过程。
NOTES:在填入参数类型的时候,一定要将参数类型写完整,将包的名字写上。例如上述插入参数的类型应该为test_emp_maint.t_emp,而不是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值