Was ist eine gespeicherte Prozedur?
Definition:
Schreiben Sie häufig verwendete oder sehr komplexe Aufgaben im Voraus mit SQL-Anweisungen und speichern Sie sie unter einem angegebenen Namen. Wenn Sie dann die Datenbank bitten möchten, in Zukunft Dienste mit denselben Funktionen wie die definierten gespeicherten Prozeduren bereitzustellen, müssen Sie nur noch Execute aufrufen . Autocomplete-Befehle.
An dieser Stelle könnte jemand fragen: Eine gespeicherte Prozedur ist also nur eine Ansammlung von SQL-Anweisungen?
Warum möchte Microsoft diese Technologie hinzufügen?
Was ist also der Unterschied zwischen gespeicherten Prozeduren und gewöhnlichen SQL-Anweisungen?
Vorteile gespeicherter Prozeduren:
1. Gespeicherte Prozeduren werden nur dann kompiliert, wenn sie in Zukunft erstellt werden. Im Allgemeinen werden SQL-Anweisungen bei jeder Ausführung einmal neu kompiliert, sodass die Verwendung gespeicherter Prozeduren die Ausführung verbessern kann Geschwindigkeit der Datenbank.
2. Wenn komplexe Vorgänge in der Datenbank ausgeführt werden (z. B. Aktualisieren, Einfügen, Abfragen, Löschen für mehrere Tabellen), kann dieser komplexe Vorgang in einer gespeicherten Prozedur gekapselt und in Verbindung mit der von der Datenbank bereitgestellten Transaktionsverarbeitung verwendet werden.
3. Gespeicherte Prozeduren können wiederverwendet werden, was die Arbeitsbelastung von Datenbankentwicklern verringern kann
4. Hohe Sicherheit, Sie können festlegen, dass nur ein bestimmter Benutzer das Recht hat, den angegebenen gespeicherten Prozess zu verwenden
Arten von gespeicherten Prozeduren:
1. Gespeicherte Systemprozeduren: beginnend mit sp_, die zum Einrichten des Systems, zum Abrufen von Informationen und für damit verbundene Verwaltungsaufgaben verwendet werden, z. B. sp_help, mit dem relevante Informationen über das angegebene Objekt abgerufen werden.
2. Die erweiterte gespeicherte Prozedur beginnt mit XP_ und wird zum Aufrufen von Funktionen verwendet, die vom Betriebssystem bereitgestellt werden.
exec master..xp_cmdshell 'ping 10.8.16.1'
3. Benutzerdefinierte gespeicherte Prozeduren, das nennen wir gespeicherte Prozeduren
Gängige Formate
Erstellen Sie eine Prozedur prozedurname
[@parameter data_type][output]
[mit]{Neukompilierung|Verschlüsselung}
als
ql_statement
erklären:
Ausgabe: zeigt an, dass dieser Parameter zurückgegeben werden kann
mit {Neukompilierung|Verschlüsselung}
Neu kompilieren: bedeutet, dass diese gespeicherte Prozedur bei jeder Ausführung neu kompiliert wird.
Verschlüsselung: Der Inhalt der erstellten gespeicherten Prozedur wird verschlüsselt
wie:
Der Inhalt des Tabellenbuchs ist wie folgt
Nummerierter Buchtitelpreis
001 Einführung in die C-Sprache$30
002 PowerBuilder-Berichtsentwicklung 52 $
Beispiel 1: Gespeicherte Prozedur zum Abfragen des Inhalts der Tabelle Book
proc query_book erstellen
als
* aus Buch auswählen
gehen
exec query_book
Beispiel 2: Fügen Sie einen Datensatz zur Tabelle Buch hinzu und fragen Sie die Gesamtzahl aller Bücher in dieser Tabelle ab
Erstellen Sie proc insert_book
@param1 char(10),@param2 varchar(20),@param3 Geld,@param4 Geldausgabe
mit Verschlüsselung ----------Verschlüsselung
als
Buch einfügen (Nummer, Buchtitel, Preis) Werte(@param1,@param2,@param3)
Wählen Sie @param4=sum(price) aus dem Buch aus
gehen
Ausführungsbeispiel:
@total_price als Geld deklarieren
exec insert_book '003','Delphi Control Development Guide',$100,@total_price
print 'Der Gesamtbetrag beträgt'+convert(varchar,@total_price)
gehen
Drei Arten von Rückgabewerten gespeicherter Prozeduren:
1. Geben Sie die Ganzzahl mit Return zurück
2. Parameter im Ausgabeformat zurückgeben
3.Recordset
Der Unterschied zwischen den zurückgegebenen Werten:
Sowohl Ausgabe als auch Rückgabe können als Variablen im Batch-Programm empfangen werden, und das Recordset wird an den Client zurückgegeben, der den Batch ausführt.
Beispiel 3: Es gibt zwei Tabellen, Produkt und Bestellung, mit folgendem Tabelleninhalt:
Produkt
Produktnummer Produktname Bestellmenge des Kunden
001 Stift 30
002 Bürste 50
003 Bleistift 100
Befehl
Produktnummer Kundenname Kundeneinzahlung
001 Nanshan District30 $
002 Bezirk Luohu50 $
003 Baoan District4 $
Bitte verwenden Sie die Nummer als Verbindungsbedingung, um die beiden Tabellen zu einer temporären Tabelle zu verbinden.
Gesamtbetrag = Anzahlung * Bestellmenge, der temporäre Tisch wird in den Lagerprozess gestellt
Der Code lautet wie folgt:
Erstellen Sie den Prozess temp_sale
als
Wählen Sie a.Produktnummer,a.Produktname,b.Kundenname,b.Kundeneinzahlung,a.Kundenbestellmenge* b.Kundeneinzahlung als Gesamtbetrag
in #temptable von Product a Inner Join Order b auf a.product number=b.product number
wenn @@error=0
„Gut“ drucken
anders
„Fehlgeschlagen“ drucken