it-swarm.com.de

PL/SQL-Verfahren vs. Funktion?

Ich versuchte den Unterschied zwischen pl/sql-Prozedur und -Funktion zu erkennen und fand den Link http://it.toolbox.com/blogs/Oracle-guide/learn-plsql-procedures-and-functions-13030 . Zuerst möchte ich Ihnen sagen, was ein Entwickler im Allgemeinen mit der Prozedur und Funktion von pl/sql macht

1) Wollte den Rückgabewert etwas erhalten. Er kann es sowohl mit der Funktion als auch mit der Prozedur annehmen. Wenn er einen einzelnen Wert zurückgeben möchte, kann er die return-Anweisung verwenden. Wenn er mehrere Werte zurückgeben möchte, kann er dies mit dem Parameter inout erreichen. Gleichermaßen kann er einen Rückgabewert mit dem Parameter inout aus der Prozedur abrufen (nicht mit der return-Anweisung).

Für den Entwickler macht es jedoch keinen Unterschied, solange er seine Absicht entweder mit der return-Anweisung oder mit dem inout-Parameter erreichen kann.

so können sich auch hier beide gegenseitig ersetzen.

2) Er kann DML sowohl in Funktion als auch in Prozedur verwenden. Daher kann er auch hier beide verwenden, um den Status der Datenbank zu ändern.

Also bekomme ich keine konkreten Gründe, welche man wo verwenden sollte, da sich beide in einigen ersetzen können.

Der einzige vernünftige Grund, den ich bis zu einem gewissen Grad gefunden habe, ist, dass Funktionen von SQL aus aufgerufen werden können, Prozeduren nicht

Könnte jemand erklären, wann und warum?

17
M Sach

Sie haben bereits den Hauptunterschied gefunden. Sie erstellen eine Funktion, wenn Sie sie in SQL verwenden möchten. Sie erstellen eine Prozedur, wenn Sie sie nur in PL/SQL verwenden möchten.

11
Daniel Hilgarth

Was ich mache. Verwenden Sie Funktionen, wenn es keine Nebenwirkungen gibt, sonst Verfahren.

Darüber hinaus dürfen nur Funktionen "rein" (für Funktionsindizes geeignet) und "Pipeline" sein.

4
Samuel

Es gibt zwei Hauptunterschiede:

1:Use Procedure to take some action. But use function to return some value. 
2:You can call function from sql query but Procedure can't. 
3:Best practice to use Procedure then function if possible. 

Vielen Dank.

1
Sanjaya Pandey

Eine Prozedur und eine Funktion haben die gleiche Struktur, außer dass:

Eine Funktionsüberschrift muss eine RETURN-Klausel enthalten, die den Datentyp des Rückgabewerts angibt. Eine Überschrift einer Prozedur kann keine RETURN-Klausel enthalten.

Eine Funktion muss mindestens eine RETURN-Anweisung in ihrem ausführbaren Teil enthalten. In einer Prozedur ist die RETURN-Anweisung optional. Weitere Informationen finden Sie unter RETURN-Anweisung.

Weitere Informationen finden Sie unter: http://docs.Oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#CHDDCFHD

1
Jay

http://docs.Oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#i4079

Übersicht über PL/SQL-Unterprogramme Ein PL/SQL-Unterprogramm ist ein benannter PL/SQL-Block, der mit einer Reihe von Parametern aufgerufen werden kann. Ein Unterprogramm kann entweder eine Prozedur oder eine Funktion sein. Normalerweise verwenden Sie eine Prozedur, um eine Aktion auszuführen, und eine Funktion, um einen Wert zu berechnen und zurückzugeben.

0