Dela via


Köra användardefinierade funktioner

gäller för:SQL ServerAzure SQL Database

Kör en användardefinierad funktion med Hjälp av Transact-SQL.

Skalärfunktioner måste anropas med hjälp av minst tvådelade namn på funktionen (<schema>.<function>). Mer information finns i CREATE FUNCTION (Transact-SQL).

Begränsningar

I Transact-SQL kan parametrar anges antingen med hjälp av <value> eller med hjälp av @parameter_name = <value>. En parameter är inte en del av en transaktion. Om en parameter ändras i en transaktion som senare återställs återgår därför värdet för parametern inte till det tidigare värdet. Värdet som returneras till anroparen är alltid värdet när modulen returneras.

Behörigheter

Behörigheter krävs inte för att köra instruktionen EXECUTE. Behörigheter krävs dock för skyddsbara som refereras i EXECUTE strängen. Om strängen till exempel innehåller en INSERT--instruktion måste anroparen för EXECUTE-instruktionen ha INSERT behörighet på måltabellen. Behörigheter kontrolleras när EXECUTE-instruktionen påträffas, även om EXECUTE-instruktionen ingår i en modul. Mer information finns i EXECUTE.

Använd Transact-SQL

I det här exemplet används skalärvärdefunktionen ufnGetSalesOrderStatusText som är tillgänglig i de flesta utgåvor av AdventureWorks2022. Syftet med funktionen är att returnera ett textvärde för försäljningsstatus från ett visst heltal. Variera exemplet genom att skicka heltal 1 till och med 7 till parametern @Status.

USE [AdventureWorks2022]
GO

-- Declare a variable to return the results of the function.
DECLARE @ret NVARCHAR(15);

-- Execute the function while passing a value to the @status parameter
EXEC @ret = dbo.ufnGetSalesOrderStatusText @Status = 5;

-- View the returned value.
-- The Execute and Select statements must be executed at the same time.
SELECT N'Order Status: ' + @ret;

Här är resultatet.

Order Status: Shipped