Beruflich Dokumente
Kultur Dokumente
25.11.2014
Stored procedures
Stored procedures (SP) ermglichen das Zusammenfassen mehrerer SQL-Befehle. Sie knnen von
einem Programm, einem anderen SQL-Befehl oder von anderen SPs aufgerufen werden.
SP sind ein wichtiger Bestandteil eines relationalen Datenbanksystems (RDBMS); MySQL untersttzt
SPs erst seit Version 5.
Vorteile
Nachteile
Aufbau einer SP
DROP PROCEDURE IF EXISTS getAllFromTable1;
DELIMITER $$
CREATE PROCEDURE getAllFromTable1()
BEGIN
SELECT * FROM Table1;
END$$
DELIMITER ;
Der erste Befehl gehrt nicht zur eigentlichen SP. Er lscht eine ggf. vorhandene alte SP.
Auch der Befehl DELIMITER $$ gehrt nicht zur eigentlichen SP. SQL-Befehle werden in MySQL mit
einem Semikolon getrennt. Da in einer SP mehrere SQL-Befehle vorkommen knnen ist es ntig, den
Delimiter kurzfristig zu ndern. Hierzu nehmen wir Zeichen, die blicherweise nicht in SQL verwendet
werden. Typischerweise wird $$ oder // verwendet.
Unter SQL Injektion versteht man eine Technik, durch die ein Angreifer versucht, Ihren SQL Code als Hilfsmittel zu
benutzen, um vollkommen anderen Code auszufhren, als Sie dies beabsichtigt haben. Sie werden anfllig fr SQL Injektion,
sobald Sie Benutzereingaben direkt an Ihren SQL Code weitergeben. Diese Art von Attacken ist nicht nur auf MySQL
beschrnkt, sondern stellt fr alle RDBMS ein Problem dar.
Beispiel: Select count(*) from user where name = *loginfeld+ and passwort = [pwfeld];
Select count(*) from users where name = ich and passwort = hacker or 1 = 1 ;
Seite 1
Stored procedures
25.11.2014
Mit CREATE PROCEDURE getAllFromTable1() wird eine SP mit Namen getAllFromTable1 erstellt.
Innerhalb der Klammer knnen Parameter bergeben werden.
BEGIN und END kennzeichnen den Rumpf der SP, durch den genderten Delimiter wird das END mit
$$ abgeschlossen.
Anschlieend wird der Delimiter wieder auf Semikolon zurckgesetzt.
Der Aufruf dieser SP erfolgt mit:
CALL getAllFromTable1();
Der Parameter pID vom aufrufenden Programm bergeben. Wenn Datenstze existieren, die der ID
entsprechen, sollen nur diese zurckgegeben werden, sonst alle.
Aufgerufen wird die SP mit CALL getTable1ByID(idbezeichnung);
Seite 2
Stored procedures
25.11.2014
Wie man sieht, gibt es zwei Mglichkeiten Parameter zu fllen, mit dem SET Befehl oder als Ergebnis
einer Abfrage mit SELECT INTO.
Aufgerufen wird diese SP mit:
CALL getTable1ByID(idbezeichnung, @anzahl);
Select @anzahl;
@anzahl stellt hierbei eine Variable dar, die anschlieend ber den Select ausgegeben wird. Das @
vor dem Namen der Variablen ist hierbei zwingend!
Seite 3
Stored procedures
25.11.2014
spSaveCity. Dieser sollen alle Parameter bergeben werden die ntig sind, um einen
Datensatz in der Tabelle City zu erstellen bzw. zu ndern.
Wenn eine Stadt mit dem bergebenem Namen und CountryCode bereits existiert soll in
diesem Datensatz lediglich die Population gendert werden, ansonsten soll ein neuer
Datensatz eingefgt werden.
Ein weiterer Parameter soll INSERT oder UPDATE zurckgeben, je nach ausgefhrter Aktion.
Seite 4