2014-02-26 7 views

Antwort

3

Der Unterschied besteht darin, dass Unterprogramm Schriften formale Parameter haben, die mit aktuellen Parametern ersetzt werden, wenn das Unterprogramm aufgerufen wird:

create or replace function f(
    p_x in varchar2 /* a formal parameter */ 
,p_y in varchar2 /* a formal parameter */ 
) return varchar2 /* a formal parameter */ 
is 
begin 
    return p_x || p_y; 
end; 

declare 
    v_z varchar2(10); 
    v_x constant varchar2(1) := 'X'; 
begin 
    v_z := f(v_x, 'Y'); /* actual parameters */ 
end; 

Der formale Parameter wird unbeschränkte (aber beschränkt Subtypen verwendet werden können) und enthält auch Informationen über Parametermodus und mögliche Standardwert, die nicht relevant sind, wenn eine Variable deklariert wird.

Die Datentypen der formalen und tatsächlichen Parameter müssen nicht identisch sein, aber kompatibel.

Es gibt noch viele andere Details, aber sie können aus Kapitel PL/SQL Subprograms von PL/SQL Language Reference gelesen werden. Siehe speziell Unterprogrammparameter.

Ich weiß nicht, warum die formalen Parameter unbeschränkt sein müssen, aber ich bin ziemlich glücklich damit, da es (unnötige) Details aus einem Unterprogrammheader entfernt, was es etwas abstrakter macht.

Verwandte Themen