SQL Stored Procedures

Aus IT-Forensik Wiki

Unter einer Stored Procedure versteht man ein Stück gespeicherten SQL-Code der immer wieder ausführbar ist. Ähnlich wie Funktionen kann man SQL Stored Procedures individuell anlegen und speichern, mit Parametern versehen, alternativ auch etwas zurückgeben lassen und anhand des Namens aufrufen. Es bietet sich also an, Code den man häufig ausführt als Stored Procedure zu speichern.


Beispiel Syntax (MSSQL):

Anlegen einer Stored Procedure:

   CREATE PROCEDURE SelectAllStudents
   AS
   SELECT * FROM Studenten
   GO;
    

Aufrufen dieser Stored Procedure:

    EXEC SelectAllStudents;
     

Anlegen einer Stored Procedure mit Parametern:

    CREATE PROCEDURE SelectAllStudents @Gruppe nvarchar(30), @Semester nvarchar(2)
    AS
    SELECT * FROM Studenten WHERE Gruppe = @Gruppe AND Semester = @Semester
    GO; 
    

Aufruf:

    EXEC SelectAllStudents @Gruppe = 'München', @Semester = '5';

Warum Stored Procedures und nicht Funktionen?

Stored Procedures und Funktionen sind in ihrer Funktion sehr ähnlich. Die Stored Procedures sind allerdings flexibler und benötigen weniger Code als Funktionen, da weder “BEGIN” und “END”, noch “RETURN” notwendig sind solange der Code nur eine Zeile lang ist. Auch erlauben Stored Procedures mehrere Parameter, während Funktionen immer nur eine Variable oder Tabelle zurückgeben können. Es ist nicht möglich in einer Funktion eine Procedure aufzurufen, umgekehrt ist es aber möglich, eine Funktion in einer Procedure aufzurufen.


Vorteile von Stored Procedures:

  • Da Stored Procedures in der Datenbank gespeichert werden ist es ohne großen Aufwand möglich mittels “ALTER PROCEDURE” den Code der Procedure zu verändern ohne dass ein Neustart nötig ist.
  • Stored Procedures ermöglichen eine große Zeitersparnis indem häufig genutzter Code nicht jedes Mal neu eingegeben werden muss und da Statements in der Regel vorkompiliert sind, wird auch Laufzeit gespart.
  • Es ist möglich Stored Procedures zu verschlüsseln, so dass der Inhalt nicht sichtbar ist. Wird der Zugriff auf die Tabelle nur über Procedures gestattet erhöht dies die Sicherheit vor unbefugtem Verändern der Daten.
  • Bessere Übersichtlichkeit des Codes durch zentral gehaltene und wiederverwendbare Procedures.


Stored Procedures als Schutz vor SQL-Injections

Stored Procedures bieten einen gewissen Schutz vor SQL-Injections, da sie Parameter/Daten und Anfragen getrennt voneinander behandeln können. So werden Parameter immer ausschließlich als Daten behandelt und nicht als Anfrage. Allerdings ist dies kein absoluter Schutz, auch Stored Procedures können, unter gewissen Bedingungen, Angriffsflächen für SQL-Injections bieten. Beispielsweise wenn der Code in der Procedure dynamisch durch konkatenierte Parameter aufgebaut ist.


Quellen

https://www.w3schools.com/sql/sql_stored_procedures.asp

https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/


YouTube:

“Advanced SQL Tutorial | Stored Procedures + Use Cases” von “Alex The Analyst” (https://www.youtube.com/watch?v=NrBJmtD0kEw)

“SQL Stored Procedures - What They Are, Best Practices, Security, and More…” von “IamTimCorey” (https://www.youtube.com/watch?v=Sggdhot-MoM)