Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Base de dados SQL no Microsoft Fabric
Execute uma função definida pelo usuário usando Transact-SQL.
As funções escalares devem ser invocadas usando pelo menos o nome de duas partes da função (<schema>.<function>). Para obter mais informações, consulte 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 é revertida posteriormente, o valor do parâmetro não será revertido para seu valor anterior. O valor retornado ao chamador é sempre o valor no momento em que o módulo retorna.
Permissões
As permissões não são necessárias para executar a instrução EXECUTE. No entanto, as permissões são necessárias no protegíveis referenciadas na cadeia de caracteres EXECUTE. Por exemplo, se a string contiver a instrução INSERT, o chamador da instrução EXECUTE deverá ter INSERT permissão na tabela de destino. As permissões são verificadas no momento em que a instrução EXECUTE é encontrada, mesmo que a instrução EXECUTE esteja incluída dentro de um módulo. Para obter mais informações, consulte EXECUTE.
Utilize o Transact-SQL
Este exemplo usa a função de valor escalar ufnGetSalesOrderStatusText que está disponível na maioria das edições do AdventureWorks2025. O objetivo da função é retornar um valor de texto para o status de vendas de um número inteiro fornecido. Varie o exemplo passando 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;
Aqui está o resultado.
Order Status: Shipped