Oracle SQL语句通过添加成员方法来修改对象类型

时间:2016-06-17 07:50:40

标签: sql oracle oracle12c

我想添加一个名为credcomp的成员方法来计算学生完成的学分数。只有学生获得至少50分的单位才算作完成。谁能告诉我如何创建这种方法?这是我到目前为止所做的:

ALTER TYPE student_t REPLACE AS OBJECT (
sid integer,
name varchar(15),
phone varchar(10),
course ref course_t,
enrolments enrolled_list,
MEMBER FUNCTION crdcomp RETURN NUMBER);
/

CREATE OR REPLACE TYPE BODY student_t AS
  MEMBER FUNCTION crdcomp RETURN NUMBER IS
  pcount integer;
  BEGIN

  ---still not done part

  END;
END;
/

我的表和对象类型如下:

- 对象类型

CREATE TYPE course_t AS OBJECT (cid integer, title varchar(15), credits_req integer);
/

CREATE TYPE unit_t AS OBJECT (unitid integer, credits integer);
/

CREATE TYPE offering_t AS OBJECT (unit ref unit_t, semester number(1), year number(4));
/

CREATE TYPE enrolled_t AS OBJECT (unitoffer ref offering_t, mark integer);
/

CREATE TYPE enrolled_list AS TABLE OF enrolled_t;
/

CREATE TYPE student_t AS OBJECT 
(sid integer, name varchar(15), phone varchar(10), course ref course_t , enrolments enrolled_list);
/

- 表

CREATE TABLE Courses OF course_t (PRIMARY KEY (cid));
/

CREATE TABLE Units OF unit_t (PRIMARY KEY (unitid));
/

CREATE TABLE Offered OF offering_t (FOREIGN KEY (unit) REFERENCES Units, unit NOT NULL);
/

CREATE TABLE Students OF student_t (PRIMARY KEY(sid), FOREIGN KEY (course) REFERENCES Courses)
NESTED TABLE enrolments STORE AS enrolledlist_ntab;
/

提前感谢您的帮助。 :)

1 个答案:

答案 0 :(得分:0)

您应该使用alter type ... add member

ALTER TYPE student_t 
ADD MEMBER FUNCTION crdcomp RETURN NUMBER);
/

然后是你的创建主体

也检查 oracle docs alter_type