Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Módosítja egy korábban létrehozott eljárást, amelyet az CREATE PROCEDURE utasítás végrehajtásával hoztak létre az SQL Server-ben.
Transact-SQL Szintaxiskonvenciók (Transact-SQL)
Szemantika
-- Syntax for SQL Server and Azure SQL Database
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter_name [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
[;]
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE AS Clause ]
-- Syntax for SQL Server CLR Stored Procedure
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter_name [ type_schema_name. ] data_type }
[ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH EXECUTE AS Clause ]
AS { EXTERNAL NAME assembly_name.class_name.method_name }
[;]
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name
[ { @parameterdata_type } [= ] ] [ ,...n ]
AS { [ BEGIN ] sql_statement [ ; ] [ ,...n ] [ END ] }
[;]
Arguments
schema_name
Annak a sémának a neve, amelyhez az eljárás tartozik.
procedure_name
A változtatandó eljárás neve. Az eljárásneveknek meg kell felelniük az azonosítókszabályainak.
;szám
Egy meglévő opcionális egész szám, amelyet azonos nevű eljárások csoportosítására használnak, hogy egyetlen DROP PROCEDURE állítással össze tudják őket adni.
Megjegyzés:
Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
@
parameter_name
Egy paraméter az eljárásban. Legfeljebb 2100 paraméter meghatározható.
[ type_schema_name. ] data_type
A paraméter adattípusa és az a séma, amelyhez tartozik.
Az adattípus-korlátozásokról további információkért lásd CREATE PROCEDURE (Transact-SQL).
VÁLTAKOZÓ
A kimeneti paraméterként támogatott eredményhalmazt adja meg. Ezt a paramétert dinamikusan építik fel a tárolt eljárás, és tartalma változó lehet. Csak kurzor paraméterekre vonatkozik. Ez az opció nem érvényes CLR eljárásokra.
alapértelmezett
Ez a paraméter alapértelmezett értéke.
KI | HOZAM
Jelzi, hogy a paraméter egy visszaadó paraméter.
ÍRÁSVÉDETT
Jelzi, hogy a paraméter nem frissíthető vagy módosítható az eljárás törzsén belül. Ha a paramétertípus tábla-érték típusú, akkor a READONLY értéket kell megadni.
RECOMPILE
Azt jelzi, hogy az Adatbázis Motor nem gyorsít el tervet erre az eljárásra, és az eljárást futás közben újrafordítják.
TITKOSÍTÁS
Alkalmazható: SQL Server (SQL Server 2008 (10.0.x) és újabbabb) és Azure SQL Database.
Azt jelzi, hogy a Database Engine az eredeti szöveget elhomályosított formátumra konvertáljaALTER PROCEDURE. Az elrejtés kimenete közvetlenül nem látható egyetlen katalógusnézetben sem az SQL Serverben. Azok a felhasználók, akiknek nincs hozzáférésük rendszertáblákhoz vagy adatbázis-fájlokhoz, nem tudják visszaszerezni az elrejtett szöveget. Azonban a szöveg elérhető lesz a kiváltságos felhasználók számára, akik vagy a DAC porton keresztül hozzáférhetnek a rendszertáblákhoz, vagy közvetlenül az adatbázis fájlokhoz. Emellett azok a felhasználók, akik debuggert csatlakoztathatnak a szerver folyamatához, futásidőben visszaszerezhetik az eredeti eljárást a memóriából. A rendszer metaadatainak eléréséről további információt a Metaadatok láthatósági konfigurációja című témakörben talál.
Ezzel a lehetőséggel létrehozott eljárások nem publikálhatók az SQL Server replikáció részeként.
Ez az opció nem lehet megadni a közös nyelvi futási idejű (CLR) tárolt eljárásokhoz.
Megjegyzés:
Frissítés során az Adatbázis Motor a sys.sql_modules rejtett kommentjeit használja az eljárások újralétrehozásához.
EXECUTE AS
Megadja azt a biztonsági kontextust, amelyben a tárolt eljárást a hozzáférés után kell végrehajtani.
További információ: EXECUTE AS Záradék (Transact-SQL).
REPLIKÁCIÓHOZ
Megadja, hogy a replikációra létrehozott tárolt eljárások nem futtathatók az Előfizetőn. Az FOR REPLICATION opcióval létrehozott tárolt eljárást tárolt eljárásszűrőként használják, és csak replikáció közben hajtják végre. Paraméterek nem jelenthetők meg, ha a FOR REPLICATION meg van jelölve. Ez az opció nem érvényes CLR eljárásokra. A FOR REPLICATION szolgáltatással létrehozott eljárások esetében a RENDSZER figyelmen kívül hagyja a RECOMPILE beállítást.
Megjegyzés:
Ez az opció nem érhető el egy zárt adatbázisban.
{ [ BEGIN ] sql_statement [;] [ ... n ] [ END ] }
Egy vagy több Transact-SQL utasítás, amely az eljárás törzsét tartalmazza. Az opcionális BEGIN és END kulcsszavak használatával csatolhatja az utasításokat. További információért lásd a Legjobb gyakorlatok, Általános megjegyzések, valamint Korlátozások és Korlátozások ( CREATE PROCEDURETransact-SQL) szakaszokban.
KÜLSŐ NÉV assembly_name.class_name.method_name
Az: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.
Megadja egy .NET Framework assembly módszerét egy CLR tárolt eljáráshoz, amelyre hivatkozhat. class_name érvényes SQL Server-azonosítónak kell lennie, és osztályként kell léteznie a szerelvényben. Ha az osztály névtérhez minősített neve egy pontot (.) használ a névtér részeinek elkülönítésére, akkor az osztálynevet zárójelekkel ([]) vagy idézőjelekkel ("") kell szegélybe tenni. A megadott metódusnak az osztály statikus metódusának kell lennie.
Alapértelmezés szerint az SQL Server nem tud CLR kódot futtatni. Létrehozhatsz, módosíthatod és eldobhatod adatbázis-objektumokat, amelyek a közös nyelvi futási modulokra hivatkoznak; azonban ezeket a hivatkozásokat nem futtathatod SQL Serverben, amíg nem engedélyezed a CLR engedélyezett opciót. A beállítás engedélyezéséhez használja a sp_configure.
Megjegyzés:
A CLR-eljárások nem támogatottak a tárolt adatbázisokban.
Általános megjegyzések
Transact-SQL tárolt eljárások nem módosíthatók CLR-tárolt eljárásokként, és fordítva.
ALTER PROCEDURE nem változtatja meg a jogosultságokat, és nem érinti a függő tárolt eljárásokat vagy triggereket. Azonban a jelenlegi és a játékmenet beállításai QUOTED_IDENTIFIERANSI_NULLS a tárolt eljárásban vannak beépítve, amikor módosítják. Ha a beállítások eltérnek attól, amit eredetileg aktiváltak, a tárolt eljárás viselkedése változhat.
Ha egy korábbi eljárásdefiníciót TITKOSÍTÁSSAL vagy ÚJRAFORDÍTVA, ezek az opciók csak akkor engedélyezettek, ha benne vannak .ALTER PROCEDURE
További információért a tárolt eljárásokról lásd CREATE PROCEDURE (Transact-SQL)
Biztonság
Permissions
Megköveteli az ALTER engedélyt az eljárásra, vagy tagságot kell db_ddladmin rögzített adatbázis szerepében.
Példák
A következő példa hozza létre a tárolt uspVendorAllInfo eljárást. Ez a folyamat visszaadja az összes Adventure Works Cycle-t szállító szolgáltató nevét, az általuk szállított termékeket, hitelminősítésüket és elérhetőségüket. Miután ez az eljárás létrejött, módosítják, hogy egy másik eredményhalmazt adjon vissza.
IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL
DROP PROCEDURE Purchasing.uspVendorAllInfo;
GO
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
A következő példa megváltoztatja a tárolt uspVendorAllInfo eljárást. Eltávolítja a EXECUTE AS CALLER záradékot, és módosítja a eljárás törzsét, hogy csak azokat a gyártókat adja vissza, akik a megadott terméket szállítják. A LEFT és CASE függvények testre szabják az eredményhalmaz megjelenését.
USE AdventureWorks2022;
GO
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
Itt van az eredmények összessége.
Vendor Product name Rating Availability
-------------------- ------------- ------- ------------
Proseware, Inc. LL Crankarm Average No
Vision Cycles, Inc. LL Crankarm Superior Yes
(2 row(s) affected)`
Lásd még:
CREATE PROCEDURE (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
VÉGREHAJTSA (Transact-SQL)
EXECUTE AS (Transact-SQL)
ESEMÉNYADATOK (Transact-SQL)
tárolt eljárások (adatbázismotor)
Rendszerrendszeri eljárások (Transact-SQL)