Spouštění uživatelem definovaných funkcí
platí pro:SQL Server
azure SQL Database
Spusťte uživatelem definovanou funkci pomocí jazyka Transact-SQL.
Skalární funkce musí být vyvolány alespoň názvem dvoudílné funkce (<schema>.<function>
). Více informací naleznete v části CREATE FUNCTION (Transact-SQL).
Omezení
V jazyce Transact-SQL lze parametry zadat buď pomocí <value>
, nebo pomocí @parameter_name = <value>
. Parametr není součástí transakce. Proto pokud se parametr změní v transakci, která se později vrátí zpět, hodnota parametru se neodvrátí k předchozí hodnotě. Hodnota vrácená volajícímu je vždy hodnotou v době, když se modul vrátí.
Dovolení
Oprávnění nejsou nutná ke spuštění příkazu EXECUTE. Oprávnění jsou však vyžadována u zajišťovaných prvků referencovaných uvnitř řetězce EXECUTE
. Pokud například řetězec obsahuje příkaz INSERT, musí mít volající příkazu EXECUTE
oprávnění k cílové tabulce INSERT
. Oprávnění se kontrolují v době, kdy je příkaz EXECUTE
zjištěn, i když je příkaz EXECUTE
součástí modulu. Další informace získáte odkazem na EXECUTE.
Použijte Transact-SQL
V tomto příkladu se používá skalární hodnotová funkce ufnGetSalesOrderStatusText
, která je k dispozici ve většině edic AdventureWorks2022
. Účelem funkce je vrátit textovou hodnotu pro stav prodeje z daného celého čísla. Změňte příklad tím, že předáte celá čísla 1 až 7 do parametru @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;
Tady je výsledek.
Order Status: Shipped
Související obsah
- uživatelem definované funkce
- VYTVOŘIT FUNKCI (Transact-SQL)