You can use either positional or named notation to pass parameters to a subprogram. When positional notation is used, the compiler looks at the relative positions of the actual parameters to determine the formal parameters to which they correspond.
The following example shows the syntax for a user-named procedure called update_inventory:
PROCEDURE update_inventory (warehouse CHAR,product NUMBER);
To call this procedure using positional notation, you must enter the actual parameters in the same order that the corresponding formal parameters appear in the specification:
update_inventory('chicago',10557);
When you write parameters using named notation, the correspondence between a formal and actual parameter is stated explicitly in the parameter List itself, and you can pass parameters in any order. Thus, the following procedure calls are logically equivalent:
update_inventory(warehouse => 'chicago',product =>
10557);
update_inventory(product => 10557, warehouse =>'chicago');
You can mix positional and named notation, provided that the parameters being passed by position precede those being passed by name in the parameter List:
update_inventory('chicago', product => 10557);
For most Built-in subprograms, using positional notation is preferable to named notation because it requires fewer keystrokes. However, named notation can be especially useful when calling Built-in subprograms that have two or more optional parameters. With named notation, you need only supply values for the optional parameters you want to pass, and can leave the others unspecified.