Executar funções definidas pelo usuário

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Execute uma função definida pelo usuário usando o Transact-SQL.

Funções escalares devem ser invocadas usando pelo menos o nome de duas partes da função (<schema>.<function>). Para obter mais informações, confira CREATE FUNCTION (Transact-SQL).

Limitações

No Transact-SQL, os parâmetros podem ser fornecidos usando <value> ou usando @parameter_name = <value>. Um parâmetro não faz parte de uma transação. Portanto, se um parâmetro for alterado em uma transação que for posteriormente revertida, o parâmetro não será revertido para seu valor anterior. O valor retornado ao chamador será sempre o valor no momento do retorno do módulo.

Permissões

Não são necessárias permissões para executar a instrução EXECUTE. Porém, permissões são necessárias nos protegíveis mencionados na cadeia de caracteres EXECUTE. Por exemplo, se a cadeia de caracteres tiver uma instrução INSERT, o chamador da instrução EXECUTE deverá ter a permissão INSERT na tabela de destino. As permissões são verificadas quando a instrução EXECUTE for encontrada, mesmo se a instrução EXECUTE estiver incluída em um módulo. Para obter mais informações, consulte EXECUTE.

Usar o Transact-SQL

Este exemplo usa a função de valor escalar ufnGetSalesOrderStatusText que está disponível na maioria das edições do AdventureWorks2022. A finalidade da função é retornar um valor de texto para o status de vendas de um determinado inteiro. Varie o exemplo passando números inteiros de 1 a 7 para o parâmetro @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;

Consulte o resultado.

Order Status: Shipped