René Nyffenegger's collection of things on the web | |
René Nyffenegger on Oracle - Most wanted - Feedback
- Follow @renenyffenegger
|
Parameter self in member functions/procedures in object oriented PL/SQL | ||
Unlike static member functions/procedures, ordinary
member functions/procedures
have a
self parameter. If this parameter is not explicitly stated, Oracle will implicitly supply such
a paramter.
Consider the following object:
create or replace type implicit_self_test as object ( dummy number, -- prevent PLS-00589: no attributes found in object type member procedure proc(param_1 in number, param_2 in varchar2), member function func(param_1 in char) return number ); / create or replace type body implicit_self_test as member procedure proc(param_1 in number, param_2 in varchar2) is begin null; -- of course, important stuff done here end; member function func(param_1 in char) return number is begin return 42; -- of course, other important stuff calculated here end func; end; /
Let's see what arguments this new type's members accept:
break on member_name skip 1 select object_name member_name, argument_name, in_out from user_arguments where package_name='IMPLICIT_SELF_TEST' -- i.e. object name and position <> 0 -- ignore return arguments for now. order by object_name, position; MEMBER_NAME ARGUMENT_NAME IN_OUT ------------------------------ ------------------------------ --------- FUNC SELF IN PARAM_1 IN PROC SELF IN/OUT PARAM_1 IN PARAM_2 IN
As can be seen, both, member functions and member procedures have a parameter called self. This parameter is
in out
in the case of a procedure while it is merely in in the case of a function.
|