Procedury składowane
Procedura zdefiniowana w dialekcie SQL, służą do przyspieszenia drogich oraz długich operacji na DBMS. Pozwalają również na wykonywanie skomplikowanych operacji po stronie serwera. Wyróżniamy:
- procedury systemowe - pozwalające na modyfikację silnika bazodanowego w sposób niedostępny przez zwykłe polecenia SQL
- procedury rozszerzone - DLL’ki rozszerzające funkcjonalność DBMS o kod w nich skompilowany
Przykładowa procedura z kursorem
CREATE PROCEDURE CalculateOrderCount @country varchar(100)
AS
DECLARE @customer varchar(100)
DECLARE custom CURSOR LOCAL FOR SELECT CustomerId FROM
Customers WHERE country=@country
OPEN custom
FETCH NEXT FROM custom INTO @customer
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE Customers SET OrderCount=(SELECT COUNT(*) FROM
Orders WHERE CustomerId=@customer) WHERE
CustomerId=@customer
FETCH NEXT FROM custom INTO @customer
END
CLOSE custom
DEALLOCATE customProcedury składowane vs bezpośrednie przetwarzanie kwerend
Jednym z plusów procedur jest to, że eliminuje niepotrzebną komunikację między klientem a serwerem w rozwiązaniach client-server. Jeśli klient chce otrzymać odpowiedzi kilku kwerend, nie musi wysyłać wielu zapytań HTTP przez sieć, tylko wysyła prośbę wykonania jednej procedury, co eliminuje nadmiar komunikacji, przyspieszając proces.
Niestety kod procedur jest nieprzenośny, istnieją różne standardy w innych dialektach SQL.
Trigger
Kod, który możemy wykonywać automatycznie po/zamiast modyfikacji jakiejś tabeli.
W niektórych DBMS triggery mogą być wywoływane na widokach. Trigger to zmiana, więc może wywoływać wykonanie innych triggerów, itd.
--skladnia
create trigger name on table [after | instead of][delete | update | insert] as
...
CREATE TRIGGER InsertOrder ON Orders AFTER INSERT
AS
DECLARE @customer varchar(100)
SET @customer=(SELECT CustomerId FROM inserted)
UPDATE Customers SET OrderCount=OrderCount+1
WHERE CustomerId=@customerSQL Server Agent
Odpowiedzialny za automatyczne wykonywanie procedur na podstawie jaka jest godzina.
Cron job w SQL.

Można zdefiniować ile się chce wykonać procedur i w jakiej kolejności, na jakiej bazie i o jakiej godzinie.
Procedury, triggery oraz funkcje pozwalają na spójne procesowanie danych przez wiele aplikacji jednocześnie.
Procedury a plan wykonania
Procedury mogą przyspieszyć swoje wykonywanie przez DBMS, analizując plan wykonania.
DBMS przechowuje ich plan wykonywania, ulepszając wydajność każdego następnego wywołania procedury.