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.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje (Transact-SQL)

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

Zadania

Odwołanie

Koncepcje

Inne zasoby