SQL uložené procedury pro SQL Server
Co je uložená procedura?
Uložená procedura je připravený kód SQL, který můžete uložit, takže kód lze znovu a znovu použít.
Pokud tedy máte dotaz SQL, který píšete znovu a znovu, uložte jej jako uloženou proceduru a poté jej pouze zavolejte, abyste jej provedli.
Parametry můžete také předat uložené proceduře, takže uložená procedura může jednat na základě hodnoty parametru, která je předána.
Syntaxe uložené procedury
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
Proveďte uloženou proceduru
EXEC procedure_name;
Demo databáze
Níže je uveden výběr z tabulky „Zákazníci“ v ukázkové databázi Northwind:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Příklad uložené procedury
Následující příkaz SQL vytvoří uloženou proceduru s názvem "SelectAllCustomers", která vybere všechny záznamy z tabulky "Customers":
Příklad
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;
Výše uloženou proceduru proveďte takto:
Příklad
EXEC SelectAllCustomers;
Uložená procedura s jedním parametrem
Následující příkaz SQL vytvoří uloženou proceduru, která vybere zákazníky z určitého města z tabulky "Zákazníci":
Příklad
CREATE PROCEDURE SelectAllCustomers
@City nvarchar(30)
AS
SELECT * FROM Customers WHERE
City = @City
GO;
Výše uloženou proceduru proveďte takto:
Příklad
EXEC SelectAllCustomers @City = 'London';
Uložená procedura s více parametry
Nastavení více parametrů je velmi snadné. Stačí uvést každý parametr a typ dat oddělený čárkou, jak je uvedeno níže.
Následující příkaz SQL vytvoří uloženou proceduru, která vybere zákazníky z určitého města s konkrétním PSČ z tabulky "Zákazníci":
Příklad
CREATE PROCEDURE SelectAllCustomers
@City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE
City = @City AND PostalCode = @PostalCode
GO;
Výše uloženou proceduru proveďte takto:
Příklad
EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP';