Versorgtes Verfahren

Ein versorgtes Verfahren ist ein Unterprogramm, das für Anwendungen verfügbar ist, die auf ein Verwandtschaftsdatenbanksystem zugreifen. Ein versorgtes Verfahren (hat manchmal einen proc, sproc, StoPro, StoredProc oder SP genannt), wird wirklich im Datenbankdatenwörterbuch versorgt.

Der typische Gebrauch für versorgte Verfahren schließt Datengültigkeitserklärung (integriert in die Datenbank) oder Zugriffskontrollmechanismen ein. Außerdem können versorgte Verfahren konsolidieren und Logik zentralisieren, die in Anwendungen ursprünglich durchgeführt wurde. Umfassende oder komplizierte Verarbeitung, die Ausführung von mehreren SQL Behauptungen verlangt, wird in versorgte Verfahren bewegt, und alle Anwendungen nennen die Verfahren. Man kann verschachtelte versorgte Verfahren verwenden, indem man ein versorgtes Verfahren aus einem anderen durchführt.

Versorgte Verfahren sind benutzerbestimmten Funktionen (UDFs) ähnlich. Der Hauptunterschied ist, dass UDFs wie jeder andere Ausdruck innerhalb von SQL Behauptungen verwendet werden kann, wohingegen versorgte Verfahren mit der Behauptung angerufen werden müssen.

NENNEN SIE Verfahren (...)

oder

FÜHREN SIE Verfahren (...) DURCH

Versorgte Verfahren können Ergebnis-Sätze, d. h. die Ergebnisse einer Behauptung zurückgeben. Solche Ergebnis-Sätze können mit Cursors durch andere versorgte Verfahren bearbeitet werden, durch das Verbinden eines Ergebnisses setzt locator, oder durch Anwendungen. Versorgte Verfahren können auch erklärte Variablen enthalten, um Daten und Cursors zu bearbeiten, die ihm erlauben, sich durch vielfache Reihen in einem Tisch zu schlingen. Versorgte Verfahren-Sprachen schließen normalerweise, und Behauptungen, und mehr ein. Versorgte Verfahren können Variablen erhalten, Ergebnisse zurückzugeben oder Variablen zu modifizieren und sie je nachdem zurückzugeben, wie und wo die Variable erklärt wird.

Durchführung

Die genaue und richtige Durchführung von versorgten Verfahren ändert sich von einem Datenbanksystem bis einen anderen. Die meisten Hauptdatenbankverkäufer unterstützen sie in einer Form. Abhängig vom Datenbanksystem können versorgte Verfahren in einer Vielfalt von Programmiersprachen, zum Beispiel SQL, Java, C, oder C ++ eingesetzt werden. Versorgte auf non-SQL Programmiersprachen geschriebene Verfahren können oder können SQL Behauptungen selbst nicht durchführen.

Die zunehmende Adoption von versorgten Verfahren hat zur Einführung von Verfahrenselementen in die SQL Sprache in und Standards im Teil SQL/PSM geführt. Das hat SQL eine befehlende Programmiersprache gemacht. Die meisten Datenbanksysteme bieten mit dem Verkäufer spezifische und Eigentumserweiterungen an, SQL/PSM überschreitend.

Anderer Gebrauch

In einigen Systemen können versorgte Verfahren verwendet werden, um Transaktionsmanagement zu kontrollieren; in anderen, hat Verfahren versorgt, die innerhalb einer solcher Transaktion geführt sind, dass Transaktionen zu ihnen effektiv durchsichtig sind. Versorgte Verfahren können auch von einem Datenbankabzug oder einem Bedingungsdressierer angerufen werden. Zum Beispiel kann ein versorgtes Verfahren durch einen Einsatz auf einem spezifischen Tisch oder Aktualisierung eines spezifischen Feldes in einem Tisch ausgelöst werden, und der Code innerhalb des versorgten Verfahrens würde durchgeführt. Das Schreiben von versorgten Verfahren als Bedingungsdressierer erlaubt auch Datenbankverwaltern, Fehler im System mit dem größeren Detail durch das Verwenden von versorgten Verfahren zu verfolgen, um die Fehler zu fangen und etwas Bilanzinformation in der Datenbank oder einer Außenquelle wie eine Datei zu registrieren.

Vergleich mit dynamischem SQL

Oben: Weil versorgte Verfahren-Behauptungen direkt in der Datenbank versorgt werden, können sie alle oder einen Teil der Kompilation oben entfernen, die normalerweise in Situationen erforderlich ist, wohin Softwareanwendungen (dynamische) Reihen-SQL-Abfragen zu einer Datenbank senden. (Jedoch führen die meisten Datenbanksysteme "geheime Behauptungslager" und andere Mechanismen durch, wiederholende Kompilation von dynamischen SQL Behauptungen zu vermeiden.) Außerdem, während sie einige oben vermeiden, hat SQL Behauptungen vorkompiliert tragen zur Kompliziertheit bei, einen optimalen Ausführungsplan zu schaffen, weil nicht alle Argumente der SQL Behauptung während der Übersetzung geliefert werden. Abhängig von der spezifischen Datenbankdurchführung und Konfiguration werden gemischte Leistungsergebnisse aus versorgten Verfahren gegen allgemeine Abfragen oder benutzerbestimmte Funktionen gesehen.

Aufhebung des Netzverkehrs: Ein Hauptvorteil mit versorgten Verfahren besteht darin, dass sie direkt innerhalb des Datenbankmotors laufen können. In einem Produktionssystem bedeutet das normalerweise, dass die Verfahren völlig auf einem Spezialdatenbankserver laufen, der direkten Zugang zu den Daten hat, die zugreifen werden. Der Vorteil hier ist, dass Netznachrichtenkosten völlig vermieden werden können. Das wird besonders wichtig für die komplizierte Reihe von SQL Behauptungen.

Encapsulation der Geschäftslogik: Versorgte Verfahren erlauben Programmierern, Geschäftslogik als eine API in der Datenbank einzubetten, die Datenverwaltung vereinfachen und das Bedürfnis reduzieren kann, die Logik anderswohin in Kundenprogrammen zu verschlüsseln. Das kann auf eine kleinere Wahrscheinlichkeit der Datenbestechung durch fehlerhafte Kundenprogramme hinauslaufen. Das Datenbanksystem kann Datenintegrität und Konsistenz mit der Hilfe von versorgten Verfahren sichern.

Delegation von Zugriffsrechten: In vielen Systemen können versorgten Verfahren Zugriffsrechte auf die Datenbank gewährt werden, die Benutzer, die jene Verfahren durchführen, nicht direkt haben.

Etwas Schutz vor SQL Spritzenangriffen: Versorgte Verfahren können verwendet werden, um gegen Spritzenangriffe zu schützen. Versorgte Verfahren-Rahmen werden als Daten behandelt, selbst wenn ein Angreifer SQL-Befehle einfügt. Außerdem wird ein DBMSs den Typ des Parameters überprüfen. Ein versorgtes Verfahren, das der Reihe nach dynamischen SQL das Verwenden des Eingangs erzeugt, ist jedoch noch für SQL Einspritzungen verwundbar, wenn richtige Vorsichtsmaßnahmen nicht genommen werden.

Vergleich mit Funktionen

  • Eine Funktion ist ein Unterprogramm, das geschrieben ist, um bestimmte Berechnung durchzuführen
  • Eine Skalarfunktion gibt nur einen einzelnen Wert zurück (oder UNGÜLTIG), wohingegen eine Tabellenfunktion einen (verwandtschafts)-Tisch zurückgibt, der Null oder mehr Reihen, jede Reihe mit einer oder mehr Säulen umfasst.
  • Funktionen müssen einen Wert zurückgeben (das Schlüsselwort verwendend), aber für versorgte Verfahren ist das nicht obligatorisch.
  • Versorgte Verfahren können Schlüsselwort, aber ohne jeden Wert verwenden, der wird passiert.
  • Funktionen konnten in Behauptungen verwendet werden, vorausgesetzt dass sie keine Datenmanipulation tun. Jedoch können Verfahren nicht in Behauptungen eingeschlossen werden.
  • Eine Funktion kann nur Rahmen haben, während versorgte Verfahren haben können oder Rahmen.
  • Ein versorgtes Verfahren kann vielfache Werte mit dem Parameter zurückgeben oder keinen Wert überhaupt zurückgeben.

Vergleich mit bereiten Behauptungen

Bereite Behauptungen nehmen eine gewöhnliche Behauptung oder fragen und parametrisieren sie, so dass verschiedene wörtliche Werte in einer späteren Zeit verwendet werden können. Wie versorgte Verfahren werden sie auf dem Server für die Leistungsfähigkeit versorgt und stellen etwas Schutz vor SQL Spritzenangriffen zur Verfügung. Obwohl einfacher und mehr bereite Aussagebehauptungen nicht normalerweise geschrieben werden, um Verfahrenslogik zu verwenden, und auf Variablen nicht funktionieren kann. Wegen ihrer einfachen Schnittstelle und Kundenseite-Durchführungen sind bereite Behauptungen zwischen DBMSs weiter wiederverwendbar.

Nachteile

  • Versorgte Verfahren-Sprachen sind ganz häufig mit dem Verkäufer spezifisch. Die Schaltung zur Datenbank eines anderen Verkäufers verlangt am wahrscheinlichsten das Neuschreiben irgendwelcher vorhandenen versorgten Verfahren.
  • Versorgte Verfahren-Sprachen von verschiedenen Verkäufern haben verschiedene Niveaus der Kultiviertheit.
  • Zum Beispiel hat der PL/SQL des Orakels mehr Spracheigenschaften und eingebaute Eigenschaften (über Pakete wie DBMS_ und UTL_ und andere) als der T-SQL des Microsofts.
  • Werkzeug-Unterstützung, um versorgte Verfahren zu schreiben und bei ihnen die Fehler zu beseitigen, ist häufig nicht als gut bezüglich anderer Programmiersprachen, aber das unterscheidet sich zwischen Verkäufern und Sprachen.
  • Zum Beispiel haben sowohl PL/SQL als auch T-SQL IDEN und Testhilfeprogramme gewidmet. Bei PL/PgSQL kann von verschiedenen IDEN die Fehler beseitigt werden.

Außenverbindungen


Blindes Experiment / Stanniolpapier der Phönix
Impressum & Datenschutz