Procedury składowane to zestaw instrukcji SQL, które można wykonać na kilka sposobów. Większość głównych DBM obsługuje procedury składowane; jednak nie wszyscy to robią. Aby uzyskać szczegółowe informacje, musisz zweryfikować dokumentację pomocy konkretnego systemu DBMS. Ponieważ najbardziej znam SQL Server, użyję go jako moich próbek.
Składnia procedury składowanej jest dość prosta:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Na przykład:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Zaletą procedur składowanych jest to, że można scentralizować logikę dostępu do danych w jednym miejscu, co jest łatwe do zoptymalizowania przez administratorów baz danych. Procedury składowane mają również tę zaletę w zakresie bezpieczeństwa, że można przyznać prawa wykonywania procedurom składowanym, ale użytkownik nie musi mieć uprawnień do odczytu/zapisu w tabelach źródłowych. To dobry pierwszy krok przeciwko wstrzykiwaniu SQL.
Przechowywane procedury mają swoje wady, w zasadzie konserwację związaną z podstawową operacją CRUD. Powiedzmy, że dla każdej tabeli masz Wstaw, Aktualizuj, Usuń i co najmniej jeden wybór na podstawie klucza podstawowego, co oznacza, że każda tabela będzie miała 4 procedury. Teraz weź przyzwoitą bazę danych z 400 tabelami i masz 1600 procedur! I to przy założeniu, że nie masz duplikatów, które prawdopodobnie będziesz mieć.
W tym przypadku użycie ORM lub innej metody automatycznego generowania podstawowych operacji CRUD ma mnóstwo zalet.