Share via


Saklı yordam değiştirmek

Bu konuda bir saklı yordam değiştirmek açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL.

  • Başlamadan önce: kısıtlamaları ve sınırlamaları, güvenlik 

  • Bir yordam değiştirmek için kullanma: SQL Server Management Studio'yu, Transact-sql 

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

[Üst]

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

Önceki yordam tanımı ile şifreleme veya WITH yeniden DERLEYIN kullanılarak oluşturulmuşsa, sadece onlar alter procedure açıklamada bulunması bu seçenekler etkinleştirilir.

Güvenlik

İzinler

[Üst]

Yordamı alter procedure izni gerektirir.

Nasıl bir saklı yordam değiştirmek için

Aşağıdakilerden birini kullanabilirsiniz:

  • SQL Server Management Studio

  • Transact-SQL

SQL Server Management Studio Kullanarak

Management Studio'da bir yordam değiştirmek için

  1. Nesne Explorer'da örneğine bağlanmak Veritabanı Altyapısıve bu örneği genişletin.

  2. Genişletme veritabanları, hangi yordamı ait olduğu ve ardından veritabanı genişletin programlama.

  3. Genişletme Saklı yordamlar, yordamı değiştirin ve sonra tıklatın sağ Değiştir.

  4. Saklı yordam metni değiştirin.

  5. Tarih sözdizimini sınamak için sorgu menüsünden tıklatın ayrıştırma.

  6. Doğum için yordam tanımı yapılan değişiklikleri kaydetmek için sorgu menüsünü tıklayın Execute.

  7. Güncellenme Zamanı yordam tanımı olarak kaydetmek için bir Transact-SQL, üzerinde komut dosyası Dosya menüsünden tıklatın Kaydet. Dosya adını kabul edin veya yeni bir adla değiştirin ve ardından kaydetmek.

Güvenlik notuGüvenlik Notu

Tüm kullanıcı girdisi doğrulayın. Önce bunu doğrulamak, kullanıcı girişi arada değil. Asla unvalidated kullanıcı girişi inşa bir komut çalıştırır.

Transact-SQL'i Kullanma

Sorgu Düzenleyicisi'nde bir yordam değiştirmek için

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısıve bu örneği genişletin.

  2. Genişletme veritabanları, yordamı ait veritabanı genişletin. Ya da, araç çubuğunda veritabanı kullanılabilir veritabanlarının listesinden seçin. Bu örnekte, seçmek AdventureWorks2012 veritabanı.

  3. Tarih dosyasını menüsünden tıklatın Yeni sorgu.

  4. Kopyalama ve aşağıdaki örnek sorgu düzenleyicisine yapıştırın. Örnek oluşturur uspVendorAllInfotüm satıcıların adlarını döndürür yordamı, Adventure Works Cyclesveritabanı, onlar tedarik ürünleri, kendi kredi derecelendirme ve kullanılabilirliklerini.

    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
    
  5. Tarih dosyasını menüsünden tıklatın Yeni sorgu.

  6. Kopyalama ve aşağıdaki örnek sorgu düzenleyicisine yapıştırın. Örnek uspVendorAllInfoyordam. execute as arayan yan kaldırılır ve yalnızca belirtilen ürün tedarik satıcılar dönmek yordam gövdesinde değiştirilir. 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
    
  7. Doğum için yordam tanımı yapılan değişiklikleri kaydetmek için sorgu menüsünü tıklayın Execute.

  8. Güncellenme Zamanı yordam tanımı olarak kaydetmek için bir Transact-SQL, üzerinde komut dosyası Dosya menüsünden tıklatın Kaydet. Dosya adını kabul edin veya yeni bir adla değiştirin ve ardından kaydetmek.

  9. Değiştirilen saklı yordamı çalıştırmak için aşağıdaki örnek yürütün.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';
    GO
    

[Üst]

Ayrıca bkz.

Başvuru

alter procedure (Transact-sql)