5 Stimmen

Was sind PostgreSQL-Funktionen und wann muss ich sie verwenden?

Ich möchte wissen, was PostgreSQL-Funktionen sind.
Wann muss ich sie schreiben?
Wie kann ich sie schreiben?
Und wie kann ich sie anrufen?

8voto

DavidEG Punkte 5701

Definition, aus wikipedia :

Eine gespeicherte Prozedur ist eine Unterroutine, die Anwendungen zur Verfügung steht, die auf ein relationales Datenbanksystem zugreifen.

Vorteile von gespeicherten Prozeduren im Allgemeinen, aus wikipedia :

Unkosten: Da gespeicherte Prozeduranweisungen direkt in der Datenbank gespeichert werden der Datenbank gespeichert werden, können sie den Kompilierungs-Overhead ganz oder teilweise beseitigen der in der Regel erforderlich ist, wenn Softwareanwendungen Inline (dynamische) SQL-Abfragen an eine Datenbank senden. (...)

Vermeidung von Netzwerkverkehr: Ein großer Vorteil von gespeicherten Prozeduren ist, dass sie direkt in der Datenbank-Engine ausgeführt werden können. In einer Produktionssystem bedeutet dies normalerweise, dass die Prozeduren vollständig auf einem spezialisierten Datenbankserver laufen, der direkten Zugriff auf die die Daten hat, auf die zugegriffen wird. Der Vorteil dabei ist, dass Netzwerk Kommunikationskosten vollständig vermieden werden können. Dies wird besonders wichtig für komplexe Serien von SQL-Anweisungen.

Kapselung der Geschäftslogik: Gespeicherte Prozeduren ermöglichen Programmierern Geschäftslogik als API in die Datenbank einzubetten, was die Arbeit vereinfachen kann. Datenverwaltung vereinfachen und die Notwendigkeit verringern, die Logik an anderer Stelle in Client-Programmen zu kodieren. (...)

Delegation von Zugangsrechten: In vielen Systemen können gespeicherte Prozeduren Zugriffsrechte auf die Datenbank gewährt werden, die die Benutzer, die diese Prozeduren ausführen, nicht direkt haben.

Ein gewisser Schutz vor SQL-Injection-Angriffen: Gespeicherte Prozeduren können sein zum Schutz vor Injektionsangriffen verwendet werden. Parameter von gespeicherten Prozeduren werden als Daten behandelt, auch wenn ein Angreifer SQL-Befehle einfügt. (...)

In PostgresSQL werden gespeicherte Prozeduren als benutzerdefinierte Funktionen . Beispiel für eine Definition:

CREATE FUNCTION somefunc(quantity integer) RETURNS integer AS $$
DECLARE
    myvariable integer := 2;
BEGIN   
    RETURN quantity * myvariable;
END;
$$ LANGUAGE plpgsql;

(Sie können andere Sprachen verwenden, um gespeicherte Funktionen in PostgreSQL zu definieren)

Beispiel anrufen:

SELECT somefunc(100);

Mehr Informationen: http://www.postgresql.org/docs/9.1/static/server-programming.html

2voto

aleroot Punkte 68601

PostgreSQL führt gespeicherte Prozeduren in mehr als einem Dutzend Programmiersprachen aus, darunter Java, Perl, Python, Ruby, Tcl, C/C++ und seine eigene PL/pgSQL, das dem PL/SQL von Oracle ähnlich ist.

Die Verwendung von gespeicherten Prozeduren hängt von Ihren Bedürfnissen und der Logik Ihres Programms ab. Meiner Meinung nach sind gespeicherte Prozeduren nur in einigen Fällen nützlich und nicht immer...

Ich habe gespeicherte Prozedur in einer Multi-Datenbank-Server-Anwendung verwendet, in diesem Fall die Verwendung von gespeicherten Prozedur könnte äußerst nützlich sein, zum Beispiel für den Fall, dass Sie eine Abfrage, die für den Betrieb in einem anderen Datenbank-Server-Typ geändert werden müssen, in diesem Fall können Sie eine gespeicherte Prozedur in jedem Datenbank-Server schreiben und rufen Sie es von Ihrem Programm sicher, dass es laufen und die gewünschte Resultset ohne Änderungen im Client-Code abrufen.

Um zu lernen, wie man gespeicherte Prozeduren in PostgreSQL erstellt, lesen Sie diese Seite der Dokumentation.

-1voto

shrikant sanap Punkte 1

Der Hauptvorteil liegt in der Verringerung des Netzverkehrs-Overheads. Stored Procedure ist fast dasselbe (nicht genau) wie Geschäftslogik oder Logikreifen. Ihr Hauptvorteil besteht darin, dynamische Unternehmensanwendungen zu erstellen. 100 gute Produkte sind gescheitert, weil sie keine dynamische Datenbankstruktur aufweisen. Gespeicherte Prozeduren, Funktionen, Trigger, Sequenzen, Indizes und die relationale Natur der Datenbank sind die wahren Schlüssel zur Erstellung großartiger Anwendungen. Die meisten kritischen Logiken werden in gespeicherten Prozeduren gespeichert, was die Programmierer und Tester glücklich macht und ihre Zeitvorgaben einhält.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X