我有一种称为预算的类型,定义为
create type budget as object (
year number,
amount number,
member function left_over (year in number) return number
)
Run Code Online (Sandbox Code Playgroud)
身体:
create type body budget as
member function left_over(year in number) return number is
begin
return amount;
end left_over;
end;
Run Code Online (Sandbox Code Playgroud)
和一个对象表
create table budget_table of budget;
Run Code Online (Sandbox Code Playgroud)
如何使用成员函数返回金额?就像是:
select b.left_over(2010) from budget_table b;
Run Code Online (Sandbox Code Playgroud)
谢谢
该方法不需要参数:
SQL> create or replace type budget as object (
2 year number,
3 amount number,
4 member function left_over return number
5 )
6 /
Type created.
SQL> create or replace type body budget as
2 member function left_over return number is
3 begin
4 return amount;
5 end left_over;
6 end;
7 /
Type body created.
SQL> create table budget_table of budget;
Table created.
SQL> insert into budget_table values (budget(2010,99));
1 row created.
SQL> commit;
Commit complete.
SQL> select b.left_over() from budget_table b;
B.LEFT_OVER()
-------------
99
Run Code Online (Sandbox Code Playgroud)
(我认为这是一项学术练习,因为在真实的商业数据库中创建这样的表是没有意义的!)
限制特定年份的预算:
SQL> insert into budget_table values (budget(2010,99));
1 row created.
SQL> select b.left_over() from budget_table b;
B.LEFT_OVER()
-------------
88
99
SQL> select b.left_over() from budget_table b
2 where b.year = 2010;
B.LEFT_OVER()
-------------
99
Run Code Online (Sandbox Code Playgroud)