Share via


alter yordam (Transact-SQL)

create procedure deyim yürütme tarafından oluşturulan önceden oluşturulmuş bir yordam değiştirir SQL Server 2008 R2.

Konu bağlantısı simgesiTransact-SQL sözdizimi 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ştirmek için bir yordam adı.Yordam adları için kuralları ile uymak gerekir tanımlayıcıları.

  • **;**number
    Böylece bunlar birlikte bir drop procedure deyimkullanılarak silinebilir aynı adı yordamları gruplandırmak 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 parametresi.2100 Parametreleri belirtilmelidir.

  • [ 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: CREATE PROCEDURE (Transact-SQL).

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

  • default
    Bir varsayılan parametre değeridir.

  • OUT | ÇIKIŞ
    Parametre bir parametre olduğunu gösterir.

  • SALT OKUNUR
    Parametresi olamaz güncelleştirilmesi veya yordam gövdesinde değiştirilmiş olduğunu gösterir.Parametre türü tabloise-değer türü, readonly belirtilmesi gerekir.

  • YENİDEN DERLE
    Gösterir Veritabanı Altyapısı Bu yordam ve yordam için plan çalışma saatsırasında çekirdekler önbellek olmaz.

  • ŞİFRELEME
    Gösterir Veritabanı Altyapısı tarafından dönüştürülür özgün metni alter procedure deyim obfuscated.Gizleme hile şaka çıktısını doğrudan katalog görünümleri hiçbirinde görülmez SQL Server.sistem tabloları veya veritabanı dosyalarına erişimi olan kullanıcıların obfuscated metni alınamıyor.Ancak, metin ya da erişim sistem tabloları üzerinden yapabilirsiniz ayrıcalıklı kullanıcılar için kullanılabilir olur DAC bağlantı noktası veya veritabanı dosyalarını doğrudan erişim.Ayrıca, sunucu işleme bir hata ayıklayıcı ekleyebileceğini kullanıcıların özgün yordamı zamanında bellekten alabilirsiniz.Sistem meta verilerverilere erişme 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ımlanamaz SQL Server çoğaltma.

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

    Not

    Bir yükseltme sırasında Veritabanı Altyapısı depolanmış obfuscated açıklamalar kullanır sql_dependencies yordamları yeniden oluşturmak için.

  • EXECUTE AS
    Sağlanmadan sonra saklı yordam yürütmek için hangi güvenlik bağlamını belirtir.

    Daha fazla bilgi için, bkz. Yan (Transact-SQL) yürütme.

  • Ç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 saklı yordam filtre olarak kullanılır ve yalnızca çoğaltmasırasında yürütülen.for REPLICATION belirtilirse parametreleri bildirilemez.Bu seçenek clr yordamları için geçerli değil.ÇOĞALTMA için oluşturulan yordamlar için yeniden seçeneği yoksayılır.

  • { [BAŞLANGIÇ] sql_statement [;] [ ...n ] [ END ] }
    Bir veya daha fazla Transact-SQL ifadeleri kapsayan gövdesini yordamı.Deyimleri içine isteğe bağlı başlangıç ve BİTİŞ anahtar sözcüklerini kullanabilirsiniz.Daha fazla bilgi için bkz: en iyi uygulamalar, genel açıklamalar ve sınırlamalar ve kısıtlamalar bölümlerde CREATE PROCEDURE (Transact-SQL).

  • DIŞ ad assembly_name**.class_name.method_name
    yöntem belirtir bir .NET Frameworkderleme için CLR saklı yordamı başvuru.class_namebir geçerli olması SQL Server tanımlayıcısı ve derlemesınıf olarak bulunmalıdır.Sınıf varsa, bir dönem bir ad alanıyla nitelenmiş ad kullanır (
    .) ad alanı bölümlerini ayırmak için sınıf adı köşeli ayraçlar kullanılarak sınırlanması gerekir ( []) veya tırnak işaretleri ("** ").  Belirtilen yöntem sınıfının statik yöntem olmalıdır.

    Varsayılan olarak, SQL Server olamaz yürütmek clr kodu.Oluşturmak, değiştirmek ve ortak dil Çalışma Zamanı Modülü başvuru veritabanı nesnelerini bırakın; Ancak, bunlar başvuran yürütmek olamaz SQL Server olanak kadar clr seçeneği etkin.Seçeneği etkinleştirmek için kullanın sp_configure.

Genel açıklamalar

Transact-SQLsaklı yordamları clr Saklı yordamlar olacak şekilde değiştirilemez ve tam tersi.

alter procedure izinleri değiştirmez ve tüm bağımlı saklı yordamlar veya Tetikleyiciler etkilemez.Ancak, değişiklik yapıldığında QUOTED_IDENTIFIER ve ANSI_NULLS geçerli oturum ayarlarını saklı yordam dahil edilir.saklı yordam başlangıçta oluşturulduğunda ayarlar etkin olanlardan farklı ise, saklı yordam davranışını değiştirebilir.

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

Saklı yordamlar hakkında daha fazla bilgi için bkz: CREATE PROCEDURE (Transact-SQL).

Güvenlik

İzinler

Yordamı alter procedure izni gerektirir.

Örnekler

Aşağıdaki örnek oluşturur uspVendorAllInfo saklı yordam.Bu yordamı sağlayın tüm satıcıların adlarını döndürür Adventure Works Cycles, kendi sağladıkları ürünleri, kredi derecelendirmelerine ve bunların kullanılabilirliğini.Bu yordamı oluşturulduktan sonra bir başka sonuç kümesidöndürmek için sonra değiştirilir.

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

Aşağıdaki örnek değiştirir uspVendorAllInfo saklı yordam.execute as ARAYAN yan tümce kaldırır ve yalnızca belirtilen ürün tedarik satıcılar geri döndürme yordamı gövdesini değiştirir.LEFT Ve CASE işlevleri sonuç kümesigörünümünü özelleştirmek.

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

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.

Görevler

Başvuru

Kavramlar

Diğer Kaynaklar