ALTER PROCEDURE (Transact-SQL)
Modyfikuje wcześniej utworzone procedury, która została utworzona przez wykonywania instrukcja CREATE PROCEDURE.ALTER PROCEDURE nie powoduje zmiany uprawnień i nie wpływa na wszystkie zależne przechowywane procedury lub wyzwalaczy.Jednak ustawienia bieżącej sesja QUOTED_IDENTIFIER i ANSI_NULLS znajdują się w procedura przechowywana jego modyfikacji.Jeśli ustawienia obowiązują różne od tych, gdy procedura przechowywana została utworzona, może zmienić zachowanie procedury przechowywanej.
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ [ OUT [ PUT ]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS
{ <sql_statement> [ ...n ] | <method_specifier> }
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE_AS_Clause ]
<sql_statement> ::=
{ [ BEGIN ] statements [ END ] }
<method_specifier> ::=
EXTERNAL NAME
assembly_name.class_name.method_name
Argumenty
schema_name
The OUTPUT variable must be defined when the procedure is created and also when the variable is used.procedure_name
To nazwa procedury zmiany.Procedura nazwy muszą być zgodne z regułami dla identyfikatory.**;**number
To istniejących opcjonalna liczba całkowita, która służy do grupowania procedury taką samą nazwę, aby usunięte ze sobą za pomocą jednej instrukcja DROP PROCEDURE.Uwaga
This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
**@**parameter
To jest parametr w procedurze.Może zostać określonych maksymalnie 2100 parametrów.[ type_schema_name**.** ] data_type
Jest to typ danych parametru i schematu, do której należy.Aby uzyskać informacje dotyczące ograniczeń typu danych zobacz CREATE PROCEDURE (języka Transact-SQL).
VARYING
The expression refers to the value entered with the UPDATE or INSERT statement.Ten parametr jest konstruowana dynamicznie przez procedura przechowywana i jego zawartość może się różnić.Ma zastosowanie tylko do parametrów kursor.default
Liczba odczytów fizycznej wykonywane ostatniego czas wyzwalacz został wykonany.DANE WYJŚCIOWE
Wskazuje, że parametr zwrotny parametru.RECOMPILE
Wskazuje, że SQL Server 2005 Database Engine nie nie pamięci podręcznej planu dla tej procedury i procedura jest ponownie kompilowana w czasie wykonywania.SZYFROWANIE
Wskazuje, że Database Engine przekonwertuje oryginalny tekst instrukcja ALTER PROCEDURE na format obfuscated. Dane wyjściowe obfuscation nie jest bezpośrednio widoczne w dowolnym z widoki wykazu w SQL Server 2005. xoffsetJednak tekst będzie miał dostęp do uprzywilejowanych użytkowników, którzy mieli dostęp tabele systemowe przez DAC port lub bezpośrednio dostęp do plików bazy danych.colstatAby uzyskać więcej informacji na temat uzyskiwania dostępu do metadane systemu Zobacz Konfiguracja widoczność metadane.Procedury utworzone za pomocą tej opcji nie mogą być publikowane w ramach SQL Server replikacja.
Opcja ta nie może być określone dla typowych procedur wykonywania (CLR) przechowywane języka.
Uwaga
Podczas uaktualniania Database Engine używa obfuscated komentarzy, przechowywane w sys.sql_modules ponownego tworzenia procedur.
wykonać JAKO
Określa kontekst zabezpieczeń, w którym do wykonać procedura przechowywana, po jest on dostępny.Aby uzyskać więcej informacji zobacz EXECUTE AS Clause (Transact-SQL).
Jest numerem identyfikacyjnym logowania użytkownika.
Określa, że procedury składowane, które są tworzone dla replikacji, nie mogą być wykonywane na subskrybencie.Procedura składowana utworzona z opcją FOR REPLICATION służy jako filtr procedury składowanej i jest wykonywana tylko podczas replikacji.Jeśli jest określona opcja FOR REPLICATION, nie można deklarować parametrów.W przypadku procedur utworzonych z opcją FOR REPLICATION opcja RECOMPILE jest ignorowana.JAK
Czy procedura ma podjąć działania.<sql_statement>
Każdy numer i typ Transact-SQL instrukcje, które mają zostać uwzględnione w procedurze. Należy stosować pewne ograniczenia.Aby uzyskać więcej informacji zobacz „<sql_statement>Ograniczenia dotyczące „ CREATE PROCEDURE (języka Transact-SQL).Nazwa EXTERNAL assembly_name**.** class_name**.method_name
Określa metodę zestawu Microsoft .NET Framework, do której odwołuje się procedura składowana CLR.Nazwa class_name musi być poprawnym identyfikatorem programu SQL Server i musi istnieć jako klasa w zestawie.Jeśli nazwa klasy jest kwalifikowaną przestrzenią nazw, części przestrzeni nazw są oddzielone od siebie kropkami (.), a nazwa klasy musi być ujęta w nawiasy ([** ]) lub cudzysłowy (" ").Określona metoda musi być metodą statyczną klasy.Uwaga
W następującym przykładzie polecenie wyświetla listę numer zadania dołączony do SQL Server harmonogram. Można tworzyć, modyfikować i upuszczać obiekty bazy danych, które odwołują się do modułów środowiska wykonawczego języka wspólnego, jednak nie można wykonać te odwołania w SQL Server dopóki nie zostanie włączone Opcja CLR włączone.The sys.dm_exec_query_transformation_statsdynamiczny widok zarządzania is identified for informational purposes only.
Remarks
Transact-SQL Nie można modyfikować procedur przechowywanych do środowiska CLR przechowywane procedury i na odwrót.
Aby uzyskać więcej informacji zobacz sekcję Uwagi w CREATE PROCEDURE (języka Transact-SQL).
Uwaga
Jeśli poprzedni definicja procedury został utworzony za pomocą WITH szyfrowanie lub WITH RECOMPILE, opcje te są włączone tylko wtedy, gdy zostaną one uwzględnione w instrukcji ALTER PROCEDURE.
Uprawnienia
Wymaga uprawnienia ALTER na procedurze.
Przykłady
Poniższy przykład tworzy uspVendorAllInfo Procedura przechowywana. Procedura ta zwraca nazwy dostawców, którzy dostarczyć Adventure Works Cycles, produktów, ich dostarczenie, ich klasyfikacje faktury i ich dostępności. Po utworzeniu tej procedury jest następnie zmodyfikowany zwrócić zestaw wyników różne.
W poniższym przykładzie zmienia uspVendorAllInfo Procedura przechowywana (bez wykonać AS opcja) do zwracania tylko dla tych dostawców, którzy dostarczają określony produkt. The LEFT and CASE functions customize the appearance of the result zestaw.
ALTER PROCEDURE Purchasing.uspVendorAllInfo
@Product varchar(25)
AS
SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name',
'Credit 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.VendorID = pv.VendorID
INNER JOIN Production.Product AS p
ON pv.ProductID = p.ProductID
WHERE p.Name LIKE @Product
ORDER BY v.Name ASC;
GO
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';
GO
Here is the result set.
Vendor Product name Credit rating Availability
-------------------- ------------------- ------------- ------------
Proseware, Inc. LL Crankarm Average No
Vision Cycles, Inc. LL Crankarm Superior Yes
(2 row(s) affected)
See Also