ModifyUser tanımlı işlevler
Kullanıcı tanımlı işlevler değiştirebileceğiniz SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL. Aşağıda açıklandığı gibi kullanıcı tanımlı işlevler değiştirme işlevlerini izinleri değişmez, ne de herhangi bir bağımlı işlevler, saklı yordamlar veya Tetikleyiciler etkileyecektir.
Bu Konuda
Başlamadan Önce
Sınırlamalar ve Kısıtlamalar
Güvenlik
Kullanıcı tanımlı değiştirmeye çalışması, kullanarak:
SQL Server Management Studio
Transact-SQL
Başlamadan Önce
Sınırlamalar ve Kısıtlamalar
alter FUNCTION, aşağıdaki eylemleri gerçekleştirmek için kullanılamaz:
Bir skalar değerli işlev değiştirmek için tablo değerli fonksiyon ya da tersi.
Satır içi işlev deyimli bir işlev veya tersi değiştir.
Transact-sql işlevi bir clr ilevi ya da tersi için değiştirin.
Güvenlik
İzinler
İşlev veya şema alter izni gerektirir. İşlev kullanıcı tanımlı bir tür belirtirse, tür üzerinde EXECUTE izni gerektirir.
[Top]
SQL Server Management Studio Kullanarak
Kullanıcı tanımlı bir işlev değiştirmek için
Değiştirmek istediğiniz işlevi içeren veritabanı yanındaki artı işaretini tıklatın.
Yanındaki artı işaretini tıklayın programlama ağıl.
Değiştirmek istediğiniz işlevi içeren klasörün yanındaki artı işaretini tıklatın:
Tablo değerli işlev
Skalar değerli işlev
Toplama işlevi
Seçin ve değiştirmek istediğiniz işlevi sağ Değiştir.
Sorgu penceresinde, alter FUNCTION deyimi için gerekli değişiklikleri yapın.
Tarih dosyasını menüsünden tıklatın kaydetmekfunction_name.
[Top]
Transact-SQL'i Kullanma
Kullanıcı tanımlı bir işlev değiştirmek için
İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.
Standart çubuğunda Yeni sorgu.
Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute.
-- Scalar-Valued Function USE [AdventureWorks2012] GO ALTER FUNCTION [dbo].[ufnGetAccountingEndDate]() RETURNS [datetime] AS BEGIN RETURN DATEADD(millisecond, -2, CONVERT(datetime, '20040701', 112)); END; -- Table-Valued Function USE [AdventureWorks2012] GO ALTER FUNCTION [dbo].[ufnGetContactInformation](@PersonID int) RETURNS @retContactInformation TABLE ( -- Columns returned by the function [PersonID] int NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [JobTitle] [nvarchar](50) NULL, [BusinessEntityType] [nvarchar](50) NULL ) AS -- Returns the first name, last name, job title and business entity type for the specified contact. -- Since a contact can serve multiple roles, more than one row may be returned. BEGIN IF @PersonID IS NOT NULL BEGIN IF EXISTS(SELECT * FROM [HumanResources].[Employee] e WHERE e.[BusinessEntityID] = @PersonID) INSERT INTO @retContactInformation SELECT @PersonID, p.FirstName, p.LastName, e.[JobTitle], 'Employee' FROM [HumanResources].[Employee] AS e INNER JOIN [Person].[Person] p ON p.[BusinessEntityID] = e.[BusinessEntityID] WHERE e.[BusinessEntityID] = @PersonID; IF EXISTS(SELECT * FROM [Purchasing].[Vendor] AS v INNER JOIN [Person].[BusinessEntityContact] bec ON bec.[BusinessEntityID] = v.[BusinessEntityID] WHERE bec.[PersonID] = @PersonID) INSERT INTO @retContactInformation SELECT @PersonID, p.FirstName, p.LastName, ct.[Name], 'Vendor Contact' FROM [Purchasing].[Vendor] AS v INNER JOIN [Person].[BusinessEntityContact] bec ON bec.[BusinessEntityID] = v.[BusinessEntityID] INNER JOIN [Person].ContactType ct ON ct.[ContactTypeID] = bec.[ContactTypeID] INNER JOIN [Person].[Person] p ON p.[BusinessEntityID] = bec.[PersonID] WHERE bec.[PersonID] = @PersonID; IF EXISTS(SELECT * FROM [Sales].[Store] AS s INNER JOIN [Person].[BusinessEntityContact] bec ON bec.[BusinessEntityID] = s.[BusinessEntityID] WHERE bec.[PersonID] = @PersonID) INSERT INTO @retContactInformation SELECT @PersonID, p.FirstName, p.LastName, ct.[Name], 'Store Contact' FROM [Sales].[Store] AS s INNER JOIN [Person].[BusinessEntityContact] bec ON bec.[BusinessEntityID] = s.[BusinessEntityID] INNER JOIN [Person].ContactType ct ON ct.[ContactTypeID] = bec.[ContactTypeID] INNER JOIN [Person].[Person] p ON p.[BusinessEntityID] = bec.[PersonID] WHERE bec.[PersonID] = @PersonID; IF EXISTS(SELECT * FROM [Person].[Person] AS p INNER JOIN [Sales].[Customer] AS c ON c.[PersonID] = p.[BusinessEntityID] WHERE p.[BusinessEntityID] = @PersonID AND c.[StoreID] IS NULL) INSERT INTO @retContactInformation SELECT @PersonID, p.FirstName, p.LastName, NULL, 'Consumer' FROM [Person].[Person] AS p INNER JOIN [Sales].[Customer] AS c ON c.[PersonID] = p.[BusinessEntityID] WHERE p.[BusinessEntityID] = @PersonID AND c.[StoreID] IS NULL; END RETURN; END;
Daha fazla bilgi için, bkz. alter FUNCTION (Transact-sql).
[Top]