alter procedure (Transact-sql)

create procedure deyimi yürütme tarafından oluşturulan önceden oluşturulmuş yordama değiştirir SQL Server 2012.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları (Transact-SQL)

Sözdizimi

--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 }
[;]

Bağımsız değişkenler

  • schema_name
    Yordamı ait olduğu şema adı.

  • procedure_name
    Değiştirme yordamı adı. Yordam adları için kuralları ile uymak gerekir tanımlayıcıları.

  • **;**number
    Böylece onlar arada bir drop procedure deyimi kullanarak bırakılan Grup yordamlar aynı adı için kullanılan varolan isteğe bağlı tamsayı.

    [!NOT]

    Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

  • **@**parameter
    Yordam parametre. 2.100 Parametreleri için belirtilebilir.

  • [ type_schema_name**.** ] data_type
    Parametre ve ait olduğu şema veri türüdür.

    Veri türü kısıtlamaları hakkında daha fazla bilgi için bkz: procedure (Transact-sql) oluştur.

  • DEĞİŞEN
    Sonuç kümesi bir çıkış parametresi olarak desteklenen belirtir. Bu parametre saklı yordam tarafından dinamik olarak oluşturulur ve içeriğini gösterebilir. Yalnızca imleç parametreler için geçerlidir. Bu seçenek clr yordamları için geçerli değil.

  • default
    Parametrenin varsayılan değeridir.

  • OUT | ÇIKIŞ
    Parametre dönüş parametresi olduğunu gösterir.

  • READONLY
    Parametre değil güncelleştirilmesi veya yordam gövdesinde güncellenmiştir olduğunu gösterir. Parametre türü tablo değer türü ise, salt okunur belirtilmelidir.

  • YENİDEN DERLE
    Gösteren Veritabanı Altyapısınot Bu yordam ve yordam için plan zamanında derlenmiş çekirdekler önbellek yok.

  • ENCRYPTION
    Gösteren Veritabanı Altyapısıalter procedure deyiminin özgün metni bir obfuscated biçimine dönüştürür. Obfuscation çıktısını doğrudan herhangi bir katalog görünümlerinde görünür değil SQL Server. Sistem tablolarına veya veritabanı dosyalarına erişimi olmayan kullanıcılar karıştırılmış metni alamaz. Ancak, DAC bağlantı noktası üzerinden sistem tablolarına veya doğrudan veritabanı tablolarına erişebilen kullanıcılar metni kullanabilir. Ayrıca, bir hata ayıklayıcıyı sunucu işlemine bağlayabilen kullanıcılar özgün yordamı çalışma zamanında bellekten alabilir. Sistem meta veri erişim hakkında daha fazla bilgi için bkz: Meta veri görünürlük yapılandırma.

    Bu seçeneği ile oluşturulan yordamlar bir parçası olarak yayınlanan SQL Serverçoğaltma.

    Bu seçenek, ortak dil çalışma zamanı (clr) depolanan yordamlar için belirtilemez.

    [!NOT]

    Yükseltme işlemi sırasında Veritabanı Altyapısıdepolanan obfuscated yorum kullanır sys.sql_modules yordamları yeniden.

  • EXECUTE AS
    Sonra o erişilen saklı yordamı yürütmek güvenlik bağlamında belirtir.

    Daha fazla bilgi için, bkz. execute as yan tümcesi (Transact-sql).

  • ÇOĞALTMA İÇİN
    Çoğaltma için oluşturulan saklı yordamlar abone üzerinde yürütülemez belirtir. for REPLICATION seçeneğiyle oluşturulmuş bir saklı yordam bir saklı yordam filtre olarak kullanılır ve yalnızca çoğaltma sırasında yürütülecek. Parametreleri olamaz for REPLICATION belirtilirse ilan etti. Bu seçenek clr yordamları için geçerli değil. RECOMPILE seçeneği ile çoğaltma için oluşturulan yordamlar için yoksayılır.

    [!NOT]

    Bu seçenek içerilen bir veritabanında kullanılamaz.

  • { [ BEGIN ] sql_statement [;] [ ...n ] [END]}
    Bir veya daha fazla Transact-SQLyordam gövdesinde oluşan tablolar. Deyimleri içine isteğe bağlı BEGIN ve end anahtar kelimeler kullanabilirsiniz. Daha fazla bilgi için bkz: en iyi uygulamalar, genel açıklamalar ve sınırlamalar ve kısıtlamalar bölümlerde procedure (Transact-sql) oluştur.

  • Dış ad assembly_name**.class_name.method_name
    Yöntemini belirtir bir .NET FrameworkDerleme bir CLR saklı yordamı başvuru. class_namegeçerli olmalıdır SQL Servertanımlayıcısı ve derleme bir sınıf olarak varolmalıdır. Sınıf varsa, bir süre bir ad alanıyla nitelenmiş ad kullanır (
    .) ad alanının bölümlerini ayırmak için sınıf adı köşeli ayraçlar kullanılarak ayrılmış gerekir ([]) veya tırnak işaretleri (""**).   Belirtilen yöntem sınıfının statik bir yöntem olmalıdır.

    Varsayılan olarak, SQL Serverclr kod yürütülemez. Oluşturmak, değiştirmek ve ortak dil Çalışma Zamanı Modülü başvuru veritabanı nesnelerini bırakın; Ancak, bu başvurular yürütülemiyor SQL Serverolanak kadar clr seçeneği etkin. Seçeneği etkinleştirmek için kullanın sp_configure.

    [!NOT]

    clr yordamları içerdiği bir veritabanında desteklenmez.

Genel Yorumlar

Transact-SQLsaklı yordamları clr depolanan yordamlar için değiştirilemez ve tam tersi.

alter yordam izinleri değiştirmez ve tüm bağımlı saklı yordamlar veya Tetikleyiciler etkilemez. Ancak değiştirildiğinde geçerli oturum ayarları ansı_nulls ve quoted_ıdentıfıer için saklı yordam dahil. Saklı yordam başlangıçta oluşturulduğunda ayarları etkin o--dan farklı ise, saklı yordamın davranışını değiştirebilir.

Bir önceki yordam tanımı ile şifreleme veya WITH yeniden DERLEYIN kullanılarak oluşturulmuşsa, bu seçenekler yalnızca alter procedure dahil edilmesi etkinleştirilir.

Saklı yordamlar hakkında daha fazla bilgi için bkz: procedure (Transact-sql) oluştur.

Güvenlik

İzinler

Gerektirir ALTERyordam veya üyelik db_ddladmin veritabanı rolü.

Örnekler

Aşağıdaki örnek oluşturur uspVendorAllInfosaklı yordamını. Bu yordam, tedarik tüm satıcıların adlarını döndürür Adventure Works Cycles, onlar tedarik ürünleri, kendi kredi derecelendirme ve kullanılabilirliklerini. Bu yordamı oluşturulduktan sonra farklı sonuç kümesi döndürmek için değiştirilir.

USE AdventureWorks2012;
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

Aşağıdaki örnek değiştirir uspVendorAllInfosaklı yordamını. execute as arayan yan tümcesi kaldırır ve yalnızca belirtilen ürün tedarik satıcılar dönmek yordam gövdesinde değiştirir. LEFTVe CASEişlevleri sonuç kümesinin görünümünü özelleştirmek.

USE AdventureWorks2012;
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

Sonuç kümesi buradadır.

Vendor               Product name  Rating    Availability

-------------------- ------------- -------   ------------

Proseware, Inc.      LL Crankarm   Average   No

Vision Cycles, Inc.  LL Crankarm   Superior  Yes

(2 row(s) affected)

Ayrıca bkz.

Başvuru

procedure (Transact-sql) oluştur

procedure (Transact-sql) bırak

execute (Transact-sql)

execute (Transact-sql)

eventdata (Transact-sql)

sys.procedures (Transact-sql)

Kavramlar

Saklı yordamlar (veritabanı altyapısı)