Úprava uložené procedury
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL databáze v Microsoft Fabric
Tento článek popisuje, jak upravit uloženou proceduru v SQL Serveru pomocí aplikace SQL Server Management Studio nebo Transact-SQL.
Omezení
Transact-SQL uložené procedury nelze měnit na CLR uložené procedury a naopak.
Pokud byla předchozí definice procedury vytvořena pomocí WITH ENCRYPTION
nebo WITH RECOMPILE
, tyto možnosti jsou povoleny pouze v případě, že jsou zahrnuty do příkazu ALTER PROCEDURE
.
Dovolení
Vyžaduje oprávnění ALTER PROCEDURE pro proceduru.
Použití aplikace SQL Server Management Studio
Úprava procedury v aplikaci SQL Server Management Studio:
V Průzkumníku objektů se připojte k instanci databázového stroje a pak tuto instanci rozbalte.
Rozbalte Databáze, rozbalte databázi, ke které procedura náleží, a potom rozbalte Programovatelnost.
Rozbalte uložené procedury, klepněte pravým tlačítkem myši na proceduru, kterou chcete upravit, a potom vyberte Upravit.
Upravte text uložené procedury.
Syntaxi otestujete tak, že v nabídce Dotaz vyberete Parsovat.
Pokud chcete uložit úpravy definice procedury, v nabídce dotazu vyberte Provést.
Pokud chcete aktualizovanou definici procedury uložit jako skript Transact-SQL, vyberte v nabídce SouborUložit jako. Přijměte název souboru nebo ho nahraďte novým názvem a pak vyberte Uložit.
Důležitý
Ověřte veškerý vstup uživatele. Neukládejte uživatelský vstup do řetězce, dokud jej neověříte. Nikdy nespouštět příkaz vytvořený z neplatného uživatelského vstupu. Neplatný vstup uživatele zneužije vaši databázi jako typ zneužití označovaného jako útok útok prostřednictvím injektáže SQL. Další informace naleznete v tématu SQL injekce.
Použijte Transact-SQL
Úprava procedury pomocí příkazů T-SQL:
V Průzkumníku objektůse připojte k instanci Databázového stroje a poté tuto instanci rozbalte.
Rozbalte Databáze, rozbalte databázi, do které procedura patří. Nebo na panelu nástrojů vyberte databázi ze seznamu dostupných databází. V tomto příkladu vyberte databázi
AdventureWorks2022
.V nabídce Soubor vyberte Nový dotaz.
Zkopírujte a vložte následující příklad do editoru dotazů. Příklad vytvoří
Purchasing.uspVendorAllInfo
proceduru, která vrátí názvy všech dodavatelů v databázi Adventure Works Cycles, produkty, které dodávají, jejich ratingy a dostupnost.CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
V nabídce Soubor vyberte Nový dotaz.
Zkopírujte a vložte následující příklad do editoru dotazů. Příklad upraví
uspVendorAllInfo
proceduru. KlauzuleEXECUTE AS CALLER
je odstraněna a tělo postupu je změněno tak, aby vrátilo pouze dodavatele, kteří dodávají zadaný produkt. FunkceLEFT
aCASE
přizpůsobí vzhled sady výsledků.Důležitý
Vyřazení a opětovné vytvoření existující uložené procedury odebere oprávnění explicitně udělená uložené proceduře. Pomocí
ALTER
místo toho upravte existující uloženou proceduru.ALTER PROCEDURE Purchasing.uspVendorAllInfo @Product varchar(25) AS SET NOCOUNT ON; SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name', 'Rating' = CASE v.CreditRating WHEN 1 THEN 'Superior' WHEN 2 THEN 'Excellent' WHEN 3 THEN 'Above average' WHEN 4 THEN 'Average' WHEN 5 THEN 'Below average' ELSE 'No rating' END , Availability = CASE v.ActiveFlag WHEN 1 THEN 'Yes' ELSE 'No' END FROM Purchasing.Vendor AS v INNER JOIN Purchasing.ProductVendor AS pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product AS p ON pv.ProductID = p.ProductID WHERE p.Name LIKE @Product ORDER BY v.Name ASC; GO
Pokud chcete uložit úpravy definice procedury, vyberte v nabídce dotazu možnost Execute.
Pokud chcete aktualizovanou definici procedury uložit jako skript Transact-SQL, vyberte v nabídce SouborUložit jako. Přijměte název souboru nebo ho nahraďte novým názvem a pak vyberte Uložit.
Pokud chcete spustit upravenou uloženou proceduru, spusťte následující příklad.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm'; GO
Související obsah
- ALTER PROCEDURE (Transact-SQL)
- SQL injekce