Oracle與Java之對象表的操作

1. 創建department對象類型
create type department as object
(
dept_id number(4),
dept_name varchar2(30)
);

2. 創建employee對象類型
create type employee as object
(
emp_id number(6),
firstname varchar2(20),
job varchar2(10),
mgr number(6),
hiredate date,
sal number(8,2),
comm number(8,2),
dept ref department,
member function wages return number
as language java
name 'Paymaster.wages() return java.math.BigDecimal',
member procedure raise_sal(r number)
as language java
name 'Paymaster.raiseSal(java.math.BigDecimal)'
);

3. 創建兩個對象表
create table depts of department as
select department(department_id,department_name) from departments;

create table emps of employee as
select employee(e.employee_id, e.first_name, e.job_id, e.manager_id,
                e.hire_date, e.salary, e.commission_pct,
                ref(d))
--(select ref(d) from depts d where d.dept_id = e.department_id))
from employees e, depts d
where e.department_id = d.dept_id;

4. 實現java類

5. 測試
select e.firstname,e.sal,value(e).wages(),e.dept.dept_name from emps e
where e.comm is not null;
-- 要調用employee的成員方法,要使用value函數將實例轉換爲employee,再調用wages()方法。
-- 要調用reference的dept中的成員屬性,必須要別名來引用。

declare
   pe employee;
begin
   select value(e) into pe from emps e
   where e.emp_id = 100;
   pe.raise_sal(3333);
   dbms_output.put_line(pe.sal);
   update emps e set e = pe
   where e.emp_id = pe.emp_id;
end;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章