Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Felügyelt Példány
A felhasználó által definiált függvényeket az SQL Server Management Studióval vagy a Transact-SQL-lel módosíthatja. A felhasználó által definiált függvények alább ismertetett módosítása nem módosítja a függvények engedélyeit, és nem befolyásolja a függő függvényeket, a tárolt eljárásokat és az eseményindítókat.
Korlátozások és korlátozások
Az ALTER FÜGGVÉNY nem használható a következő műveletek végrehajtására:
Skaláris értékű függvény módosítása táblaértékű függvényre, vagy fordítva.
Beágyazott függvény módosítása többértékű függvényre, vagy fordítva.
Módosítsa a Transact-SQL függvényt CLR-függvényre, vagy fordítva.
Engedélyek
Alter engedély szükséges a függvényhez vagy a sémához. Ha a függvény felhasználó által definiált típust ad meg, a típushoz VÉGREHAJTÁSI engedély szükséges.
Az SQL Server Management Studio használata
Válassza ki a módosítani kívánt függvényt tartalmazó adatbázis melletti pluszjelet.
Válassza a Programozhatóság mappa melletti pluszjelet.
Válassza ki a módosítani kívánt függvényt tartalmazó mappa melletti pluszjelet:
Táblaértékű függvény
Skaláris értékű függvény
Összesítő függvény
Kattintson a jobb gombbal a módosítani kívánt függvényre, és válassza a módosítása lehetőséget.
A lekérdezési ablakban végezze el a szükséges módosításokat az ALTER FÜGGVÉNY utasításban.
A Fájl menüben válassza a Mentésfunction_namelehetőséget.
Transact-SQL használata
Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.
A Standard sávon válassza Új lekérdezéslehetőséget.
Másolja és illessze be a következő példákat a lekérdezési ablakba, és válassza a Végrehajtáslehetőséget.
Az alábbi kódminta egy skaláris értékű függvényt módosít.
-- Scalar-Valued Function USE [AdventureWorks2022] GO ALTER FUNCTION [dbo].[ufnGetAccountingEndDate]() RETURNS [datetime] AS BEGIN RETURN DATEADD(millisecond, -2, CONVERT(datetime, '20040701', 112)); END;
Az alábbi kódminta egy táblaértékű függvényt módosít.
-- Table-Valued Function USE [AdventureWorks2022] 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;