2017-02-28 2 views
0
create procedure hcf2(a in number,b in number) return number as 
begin 
    if b = 0 then 
    return a; 
    else 
    return hcf2(b,mod(a,b)); 
    end if; 
end; 

die Fehler GotWährend plsql tun traf ich die folgenden Fehler

LINE/COL ERROR 
-------- ----------------------------------------------------------------- 
1/41  PLS-00103: Encountered the symbol "RETURN" when expecting one of 
     the following: 
     ; is with authid as cluster order using external 
     deterministic parallel_enable pipelined result_cache 
     The symbol "authid was inserted before "RETURN" to continue. 
+5

Ich denke, du meintest 'create function', nicht' create procedure'. –

Antwort

1

Im Grunde, was Sie hier versuchen, eine Funktion zu verwenden, anstatt Verfahren. Eine RETURN Anweisung kann auf zwei Arten verwendet werden. Eine in FUNKTION, wo es den Rückgabetyp des Functon bestimmt. Und der zweite Typ, Oracle-Server sendet sofort die Ausführungssteuerung zurück zum unmittelbaren Aufruf Code oder Host-Umgebung. In dem Block, der auf die RETURN-Anweisung folgt, werden keine weiteren Anweisungen verarbeitet.

create or replace function hcf2(a in number,b in number) return number as 
begin 
    if b = 0 then 
    return a; 
    else 
    return hcf2(b,mod(a,b)); 
    end if; 
end; 
+0

Vielen Dank –

+0

@Jash Bitte lesen Sie diese http://StackOverflow.com/Help/Someone-answers – XING

1

Bitte lesen Sie die Dokumentation von RETURN statement

Ausdruck

Optional, wenn die RETURN-Anweisung in einer Pipeline-Tabellenfunktion ist. Erforderlich, wenn sich die RETURN-Anweisung in einer anderen Funktion befindet. Nicht zulässig, wenn die RETURN-Anweisung in einer Prozedur oder anonym Block ist.


Da Sie versuchen, eine Prozedur zu erstellen, dann können Sie nicht einen Ausdruck in der RETURN-Anweisung verwenden.

+0

Vielen Dank –

Verwandte Themen