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.
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.