2016-06-07 64 views
0

我有很新的PL SQL world..and找不到一个回答我的问题......所以在这里,它是:初始化用户定义类型的属性

create or replace 
TYPE "A" as object{ 
school_category varchar(10); 
} 

create or replace 
TYPE "B" UNDER A { 
school_name varchar(10); 
school_ranking INTEGER; 
} 

我的问题: 1 。如何初始化B类型的对象,并初始化其父类的属性? 2.在创建对象时,是否存在为属性显式赋值的问题?例如,我们有这样的事情:

B_obj B:= B(school_name:=“example”,school_ranking:=“1”,school_category:=“elementary school”);

提前家伙谢谢...

回答

0
CREATE TYPE address_typ AS OBJECT ( 
    street   VARCHAR2(30), 
    city   VARCHAR2(20), 
    state   CHAR(2), 
    postal_code  VARCHAR2(6)); 
/
CREATE TYPE employee_typ AS OBJECT (
    employee_id  NUMBER(6), 
    first_name  VARCHAR2(20), 
    last_name   VARCHAR2(25), 
    email    VARCHAR2(25), 
    phone_number  VARCHAR2(20), 
    hire_date   DATE, 
    job_id   VARCHAR2(10), 
    salary   NUMBER(8,2), 
    commission_pct NUMBER(2,2), 
    manager_id  NUMBER(6), 
    department_id  NUMBER(4), 
    address   address_typ, 
    MAP MEMBER FUNCTION get_idno RETURN NUMBER, 
    MEMBER PROCEDURE display_address (SELF IN OUT NOCOPY employee_typ)); 
/

DECLARE 
    emp employee_typ; -- emp is atomically null 
BEGIN 
-- call the constructor for employee_typ 
    emp := employee_typ(315, 'Francis', 'Logan', 'FLOGAN', 
     '555.777.2222', '01-MAY-04', 'SA_MAN', 11000, .15, 101, 110, 
     address_typ('376 Mission', 'San Francisco', 'CA', '94222')); 
    DBMS_OUTPUT.PUT_LINE(emp.first_name || ' ' || emp.last_name); -- display details 

END; 
/

欲了解更多信息,请参考Oracle文档:https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/objects.htm

+0

谢谢您的回答。我发现文中也是非常有用的。但我还没有第二个问题得到了答案。无论如何要明确地赋予属性值?在你上面的例子中,像这样:emp:= employee_typ(employee_id:= 315,..... – Shahb

+0

作业:emp.first_name:='Scott'; – Dere0405