PROCEDURĘ zmiany języka Transact-SQL)
Modyfikuje utworzone wcześniej procedurę, która została utworzona przez wykonywanie instrukcja CREATE PROCEDURE w SQL Server 2008 R2.
Składnia
--Transact-SQL Stored Procedure Syntax
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ 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 ]
--CLR Stored Procedure Syntax
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH EXECUTE AS Clause ]
AS { EXTERNAL NAME assembly_name.class_name.method_name }
[;]
Argumenty
schema_name
Nazwa schematu, do której należy procedury.procedure_name
Nazwa procedury zmiany.Nazwy procedury muszą być zgodne z zasadami identyfikatorów.**;**number
Istniejące opcjonalne integer, który jest używany do grupowania tak, aby usunięte ze sobą przy użyciu jednej procedury UPUŚĆ instrukcjaprocedury o tej samej nazwie.Ostrzeżenie
Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.
**@**parameter
Parametr w procedurze.Do parametrów 2,100 może być określony.[ type_schema_name**.** ] data_type
Jest to typ danych parametru i schemat, który należy do.Aby uzyskać informacje dotyczące ograniczeń typu danych, zobacz CREATE PROCEDURE (Transact-SQL).
RÓŻNE
Określa zestaw wyników obsługiwany jako parametr wyjściowy.Ten parametr jest konstruowana dynamicznie przez procedura składowana i jego zawartość są różne.Dotyczy tylko parametry kursor .Ta opcja nie jest ważne dla procedury CLR.default
Jest wartością domyślną parametru.POZA | DANE WYJŚCIOWE
Wskazuje, że parametr jest zwracanych parametrów.TYLKO DO ODCZYTU
Wskazuje, że parametr nie zaktualizowane, lub modyfikacji w treści tej procedury.Jeśli tabelajest typem parametru-wartość typu, musi być określona tylko do odczytu.KOMPILUJ PONOWNIE
Wskazuje, że Aparat baz danych jest nie pamięci podręcznej planu dla tej procedury i procedura jest ponownie kompilowana w czaswykonywania.SZYFROWANIE
Wskazuje, że Aparat baz danych przekonwertuje oryginalny tekst instrukcja ALTER PROCEDURE posiadający mylącą format.Wyjście zaciemniania nie jest bezpośrednio widoczne w innych widoki wykazu w SQL Server.Użytkownicy, którzy nie mają dostępu do plików tabele systemowe lub bazy danych nie można pobrać posiadający mylącą tekstu.Jednak tekst będzie dostępny dla użytkowników uprzywilejowany, które można albo access tabele systemowe nad DAC portu lub bezpośrednio uzyskać dostępu do plików bazy danych.Ponadto użytkownicy, którzy mogą dołączać debuger do procesu serwera można pobrać oryginalnej procedury z pamięci w czasie wykonywania.Aby uzyskać więcej informacji dotyczących uzyskiwania dostępu do systemu metadane, zobacz Konfiguracja widoczność metadanych.Procedury utworzone za pomocą tej opcji nie można opublikować jako część SQL Server replikacja.
Tej opcji nie można określić dla wspólnych procedur przechowywanych runtime (CLR) języka.
Ostrzeżenie
Podczas uaktualniania Aparat baz danych używa posiadający mylącą komentarze przechowywane w sys.sql_modules do odtworzenia procedur.
WYKONANIE JAKO
Określa kontekst zabezpieczeń, w którym wykonać procedura składowana po jest dostępny.Aby uzyskać więcej informacji, zobacz WYKONANIE klauzuli (Transact-SQL).
DLA REPLIKACJI
Określa, że procedury przechowywane, które zostały utworzone dla replikacja nie można wykonać na subskrybenta.procedura składowana , utworzone za pomocą opcji dla replikacji jest stosowany jako filtr procedura składowana i wykonywany tylko podczas replikacja.Nie można deklarować parametrów, jeśli określony dla replikacji.Ta opcja nie jest ważne dla procedury CLR.Opcja ponownej kompilacji jest ignorowana dla procedury utworzone za pomocą dla replikacji.{ [ROZPOCZĄĆ] sql_statement [;] [ ...n ] [ END ] }
Jeden lub więcej Transact-SQL sprawozdań zawierających treść procedury.Opcjonalne słowa kluczowe rozpoczęcia i zakończenia można użyć, należy ująć w sprawozdaniu.Aby uzyskać więcej informacji, zobacz sekcje najlepszych praktyk, uwagi ogólne i ograniczenia oraz ograniczenia w CREATE PROCEDURE (Transact-SQL).Nazwa zewnętrznego assembly_name**.class_name.method_name
Określa metoda .NET Framework wirtualny plik dziennika do procedura składowana CLR do odwołania.class_namemusi być prawidłową SQL Server identyfikatora i musi istnieć jako klasa w wirtualny plik dziennika.Jeśli klasa ma nazwy kwalifikowanej nazw używana jest kropka (.) do oddzielania części obszaru nazw, nazwa klasy musi rozdzielany za pomocą nawiasów kwadratowych ( ) lub cudzysłów ("** ").Określona metoda musi być statyczna metoda klasy.Domyślnie SQL Server nie może wykonać CLR kodu.Tworzenie, modyfikowanie i usuwanie obiektów bazy danych, które odwołują się do wspólnych moduły obsługi języka; Jednakże, nie możesz wykonać te odwołania w SQL Server do chwili włączenia clr włączona opcja.Aby włączyć opcję, użyj sp_configure.
Uwagi ogólne
Transact-SQLnie można modyfikować procedur przechowywanych do środowiska CLR przechowywane procedury i na odwrót.
ALTER PROCEDURE nie zmienia uprawnienia i nie wpływa na wyzwalaczy lub zależnych procedur przechowywanych.Jednak podczas jego modyfikacji bieżącego ustawienia sesja QUOTED_IDENTIFIER i ANSI_NULLS znajdują się w procedura składowana .Jeśli ustawienia są różne od tych obowiązujących podczas procedura składowana został utworzony, może zmienić zachowanie procedura składowana .
Jeśli poprzednie definicja procedury został utworzony za pomocą szyfrowania z lub WITH RECOMPILE, opcje te są włączone tylko wtedy, gdy zostały one uwzględnione w ALTER PROCEDURE.
Aby uzyskać więcej informacji na temat procedur przechowywanych, zobacz CREATE PROCEDURE (Transact-SQL).
Zabezpieczenia
Uprawnienia
Wymaga uprawnień ALTER PROCEDURE na procedurze.
Przykłady
Poniższy przykład tworzy uspVendorAllInfo procedura składowana.Procedura ta zwraca nazwy dostawców, które dostarczają Adventure Works Cycles, produkty, które dostarczają, ich ratingami kredytowymi i ich dostępności.Po utworzeniu tej procedury jest następnie modyfikowany zwrócić różnych zestaw wyników.
USE AdventureWorks2008R2;
GO
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
Poniższy przykład modyfikuje uspVendorAllInfo procedura składowana.Usuwa wykonanie WYWOŁUJĄCEGO jako klauzula i modyfikuje organ procedury do zwracania tylko tych dostawców, którzy dostarczają określony produkt.LEFT i CASE funkcje dostosowywania wyglądu zestaw wyników.
USE AdventureWorks2008R2;
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
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';
GO
Oto zestaw wyników.
Vendor Product name Rating Availability
-------------------- ------------- ------- ------------
Proseware, Inc. LL Crankarm Average No
Vision Cycles, Inc. LL Crankarm Superior Yes
(2 row(s) affected)
Zobacz także