IT MYSQL: Stored Procedure Informationsblatt Name: Datum: Klasse: Blatt Nr.: 0/0 Lfd. Nr.: Stored Procedures Stored Procedures sind SQL-Routinen, die auf dem Datenbankserver gespeichert werden. Die Datenbank als Speicherort bietet eine Reihe von Vorteilen: Ein Argument ist der verringerte Netzwerkverkehr. Vom Client zum Server muss nur noch der Aufruf der Funktion, nicht aber die komplette Datenbankabfrage übertragen werden. Außerdem können auf Basis der Ergebnismenge bereits auf der Datenbankseite zusätzliche Aktionen durchgeführt werden, sodass nur noch die relevanten Daten an den Client zurück übertragen werden. Ein weiteres Argument ist die saubere Trennung von Datenbank- und Programmlogik. Der Datenbankadministrator hat volle Kontrolle über alle SQL Anfragen und kann diese nun effizienter warten und pflegen. Auch kann eine Stored Procedure von verschiedenen Programmen genutzt werden und ist dementsprechend Wiederverwendbar. Stored Procedures bieten die Möglichkeit der Absicherung gegenüber SQL Injection, da die Stored Procedures zusätzliche Befehle zur Ablaufsteuerung und Auswertung erfolgter Anweisungen enthalten können. Noch besser ist es aber SQL Injection bereits auf Anwendungs-Ebene vorzubeugen, also bevor die Abfragen an die Datenbank geschickt werden. Grundlagen Stored Procedures Stored Procedures können mehrere SQL Anweisungen zu einer Einheit zusammenfassen. In Ihnen können Variablen definiert werden, als auch Bedingungen, Schleifen und Kontrollsturkturen verwendet werden. Der allgemeine Aufbau und Aufruf einer Stored Procedure lautet: Aufbau: CREATE PROCEDURE MyProc([<PARAMETERLISTE>]) BEGIN [<Variablenliste>] … END; Aufruf: CALL MyProc() Variablen deklarieren Um Variablen innerhalb der Stored Procedure zu deklarieren, wird das Schlüsselwort DECLARE verwendet: Variable: DECLARE variablen_name datatype(size) DEFAULT default_value; Mit den Schlüsselworten SET und SELECT INTO kann einer Variablen ein Wert zugewiesen werden. Zuweisung: SET variablen_name = value; SELECT value INTO variablen_name FROM Tabelle; Parameterübergabe Die Parameterübergabe erfolgt hinter dem Funktions - bzw. Procedurenamen in der Parameterliste. Parameter: MODE param_name param_type(param_size); IT MYSQL: Stored Procedure Informationsblatt Name: Datum: Klasse: Blatt Nr.: 0/0 Lfd. Nr.: MODE: Das kann IN, OUT oder INOUT sein Verzweigungen: Syntax einer Wenn-Dann-Verzweigung: IF: IF if_expression THEN if_commands [ELSEIF elseif_expression THEN commands] [ELSE commands] END IF; Syntax einer Fallunterscheidung: CASE: CASE case_expression WHEN when_expression_1 THEN commands WHEN when_expression_2 THEN commands ... ELSE commands END CASE; Schleifen: In SQL besteht die Möglichkeit Schleifen zu programmieren. Die Schlüsselworte WHILE und REPEAT stehen zur Verfügung: WHILE: WHILE expression DO Statements END WHILE REPEAT REPEAT Statements UNTIL expression END REPEAT Um eine Schleife vorzeitig zu verlassen, steht das Schlüsselwort LEAVE zur Verfügung.