I have a type called budget defined as
create type budget as object (
year number,
amount number,
member function left_over (year in number) return number
)
Body:
create type body budget as
member function left_over(year in number) return number is
begin
return amount;
end left_over;
end;
And an object table
create table budget_table of budget;
How do I use the member function to return the amount? Something like:
select b.left_over(2010) from budget_table b;
Thanks
You don't need a parameter to the method:
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
(I assume this is an academic exercise, as it would make no sense to create tables like this in a real business database!)
To restrict to the budget for a particular year:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With