Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Wykonaj funkcję zdefiniowaną przez użytkownika przy użyciu języka Transact-SQL.
Funkcje skalarne muszą być wywoływane przy użyciu co najmniej dwuczęściowej nazwy funkcji (<schema>.<function>
). Aby uzyskać więcej informacji, zobacz CREATE FUNCTION (Transact-SQL).
Ograniczenia
W języku Transact-SQL parametry można dostarczyć przy użyciu <value>
lub przy użyciu @parameter_name = <value>
. Parametr nie jest częścią transakcji. W związku z tym jeśli parametr zostanie zmieniony w transakcji, która zostanie później wycofana, wartość parametru nie zostanie przywrócona do poprzedniej wartości. Wartość zwracana do elementu wywołującego jest zawsze wartością w momencie zwracania modułu.
Uprawnienia
Uprawnienia nie są wymagane do uruchomienia instrukcji EXECUTE. Jednak uprawnienia są wymagane w zabezpieczanych przywoływalnych w ciągu EXECUTE
. Jeśli na przykład ciąg zawiera instrukcję INSERT, podmiot wywołujący instrukcję EXECUTE
musi mieć uprawnienia INSERT
na tabeli docelowej. Uprawnienia są sprawdzane w momencie napotkania instrukcji EXECUTE
, nawet jeśli instrukcja EXECUTE
jest uwzględniona w module. Aby uzyskać więcej informacji, zapoznaj się z EXECUTE.
Użyj Transact-SQL
W tym przykładzie użyto funkcji wartości skalarnej ufnGetSalesOrderStatusText
, która jest dostępna w większości wersji AdventureWorks2022
. Celem funkcji jest zwrócenie wartości tekstowej określającej stan sprzedaży na podstawie podanej liczby całkowitej. Zróżnicuj przykład, przekazując liczby całkowite od 1 do 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;
Oto wynik.
Order Status: Shipped