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ít egy korábban létrehozott eljárást, amelyet az SQL Serverben a CREATE PROCEDURE utasítás futtatásával hoztak létre.
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 azokat egy DROP PROCEDURE utasítással össze lehet dobni.
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 információé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.
Jelzi, hogy az Adatbázis Engine az ALTER PROCEDURE utasítás eredeti szövegét elhomályosított formátumba konvertálja. 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.
VÉGREHAJTÁS MÁSKÉNT
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 ELJÁRÁS létrehozása (Transact-SQL) legjobb gyakorlatait, általános megjegyzéseket, valamint korlátozásokat és korlátozásokat (ELJÁRÁS létrehozása) részeket.
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.
Az ALTER PROCEDURE nem változtatja meg a jogosultságokat, és nem érinti a függő tárolt eljárásokat vagy triggereket. Azonban a QUOTED_IDENTIFIER és ANSI_NULLS aktuális ülésbeállításai a tárolt eljárásban szerepelnek, 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 WITH ENCRYPTION vagy WITH RECOMPILE használatával hoztak létre, ezek az opciók csak akkor engedélyezettek, ha az ALTER PROCEDURE be vannak foglalva.
További információért a tárolt eljárásokról lásd: LÉTREHOZ ELJÁRÁS (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 az eljárás törzsét, hogy csak azokat a szállító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:
LÉTREHOZÁSI ELJÁRÁS (Transact-SQL)
ELJÁRÁS ELTÁVOLÍTÁSA (Transact-SQL)
EXECUTE (Transact-SQL)
VÉGREHAJTÁS (Transact-SQL)
ESEMÉNYADATOK (Transact-SQL)
tárolt eljárások (adatbázismotor)
Rendszerrendszeri eljárások (Transact-SQL)