Funções escalares ODBC (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

É possível usar Funções escalares do ODBC em instruções Transact-SQL. Essas instruções são interpretadas pelo SQL Server. Elas podem ser usadas em procedimentos armazenados e em funções definidas pelo usuário. Elas incluem funções de cadeia de caracteres, numéricas, de tempo, de data, de intervalo e de sistema.

Uso

SELECT {fn <function_name> [ (<argument>,....n) ] }

Funções

As tabelas a seguir listam funções escalares ODBC que não são duplicadas no Transact-SQL.

Funções de Cadeia de Caracteres

Função Descrição
BIT_LENGTH( string_exp ) (ODBC 3.0) Retorna o comprimento em bits da expressão de cadeia de caracteres.

Retorna o tamanho interno do tipo de dados fornecido, sem converter string_exp em cadeia de caracteres.
CONCAT( string_exp1,string_exp2) (ODBC 1.0) Retorna uma cadeia de caracteres que é o resultado da concatenação de string_exp2 com string_exp1. A cadeia de caracteres resultante é dependente de DBMS. Por exemplo, se a coluna representada por string_exp1 tivesse um valor NULL, DB2 retornaria NULL, mas o SQL Server retornaria a cadeia de caracteres non-NULL.
OCTET_LENGTH( string_exp ) (ODBC 3.0) Retorna o comprimento em bytes da expressão de cadeia de caracteres. O resultado é o menor número inteiro, não menos que o número de bits dividido por 8.

Retorna o tamanho interno do tipo de dados fornecido, sem converter string_exp em cadeia de caracteres.

Função numérica

Função Descrição
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) Retorna numeric_exp truncado com posições integer_exp à direita da casa decimal. Se integer_exp for negativo, numeric_exp será truncado com as posições |integer_exp| à esquerda da casa decimal.

Funções de hora, data e intervalo

Função Descrição
CURRENT_DATE( ) (ODBC 3.0) Retorna a data atual.
CURDATE( ) (ODBC 3.0) Retorna a data atual.
CURRENT_TIME[( time-precision )] (ODBC 3.0) Retorna a hora local atual. O argumento time-precision determina a precisão em segundos do valor retornado
CURTIME() (ODBC 3.0) Retorna a hora local atual.
DAYNAME( date_exp ) (ODBC 2.0) Retorna uma cadeia de caracteres que contém o nome específico da fonte de dados do dia para a parte do dia de date_exp. Por exemplo, o nome é Domingo a Sábado ou Dom. a Sat. para uma fonte de dados que utiliza o português. O nome é Sonntag a Samstag para uma fonte de dados que utiliza o alemão.
DAYOFMONTH( date_exp ) (ODBC 1.0) Retorna o dia do mês com base no campo de mês em date_exp como um valor inteiro. O valor retornado está no intervalo de 1 a 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Retorna o dia da semana com base no campo de semana em date_exp como um valor inteiro. O valor retornado está no intervalo de 1 a 7, em que 1 representa domingo.
HOUR( time_exp ) (ODBC 1.0) Retorna a hora com base no campo de hora em time_exp como um valor inteiro no intervalo de 0 a 23.
MINUTE( time_exp ) (ODBC 1.0) Retorna o minuto com base no campo de minuto em time_exp como um valor inteiro no intervalo de 0 a 59.
SECOND( time_exp ) (ODBC 1.0) Retorna o segundo com base no campo de segundo em time_exp como um valor inteiro no intervalo de 0 a 59.
MONTHNAME( date_exp ) (ODBC 2.0) Retorna uma cadeia de caracteres que contém o nome específico da fonte de dados do mês para a parte do mês de date_exp. Por exemplo, o nome é January a December ou Jan. a Dec. para uma fonte de dados que utiliza o inglês. O nome é Januar a Dezember para uma fonte de dados que utiliza o alemão.
QUARTER( date_exp ) (ODBC 1.0) Retorna o trimestre em date_exp como um valor inteiro no intervalo de 1 a 4, em que 1 representa 1 de janeiro a 31 de março.
WEEK( date_exp ) (ODBC 1.0) Retorna a semana do ano, com base no campo de semana em date_exp como um valor inteiro no intervalo de 1 a 53.

Exemplos

a. Usando uma função ODBC em um procedimento armazenado

O seguinte exemplo usa uma função ODBC em um procedimento armazenado:

CREATE PROCEDURE dbo.ODBCprocedure  
(  
    @string_exp NVARCHAR(4000)  
)  
AS  
SELECT {fn OCTET_LENGTH( @string_exp )};  

B. Usando uma função ODBC em uma função definida pelo usuário

O seguinte exemplo usa uma função ODBC em uma função definida pelo usuário:

CREATE FUNCTION dbo.ODBCudf  
(  
    @string_exp NVARCHAR(4000)  
)  
RETURNS INT  
AS  
BEGIN  
DECLARE @len INT  
SET @len = (SELECT {fn OCTET_LENGTH( @string_exp )})  
RETURN(@len)  
END ;  
GO
SELECT dbo.ODBCudf('Returns the length.');  
--Returns 38  

Observação

O Microsoft Fabric é compatível com funções escalares ODBC, mas atualmente não é compatível com funções definidas pelo usuário que retornam valores, conforme mostrado no Exemplo B.

C. Usando funções ODBC em instruções SELECT

As seguintes instruções SELECT usam funções ODBC:

DECLARE @string_exp NVARCHAR(4000) = 'Returns the length.';  
SELECT {fn BIT_LENGTH( @string_exp )};  
-- Returns 304  
SELECT {fn OCTET_LENGTH( @string_exp )};  
-- Returns 38  
  
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};  
-- Returns CONCAT returns a character string  
SELECT {fn TRUNCATE( 100.123456, 4)};  
-- Returns 100.123400  
SELECT {fn CURRENT_DATE( )};  
-- Returns 2007-04-20  
SELECT {fn CURRENT_TIME(6)};  
-- Returns 10:27:11.973000  
  
DECLARE @date_exp NVARCHAR(30) = '2007-04-21 01:01:01.1234567';  
SELECT {fn DAYNAME( @date_exp )};  
-- Returns Saturday  
SELECT {fn DAYOFMONTH( @date_exp )};  
-- Returns 21  
SELECT {fn DAYOFWEEK( @date_exp )};  
-- Returns 7  
SELECT {fn HOUR( @date_exp)};  
-- Returns 1   
SELECT {fn MINUTE( @date_exp )};  
-- Returns 1  
SELECT {fn SECOND( @date_exp )};  
-- Returns 1  
SELECT {fn MONTHNAME( @date_exp )};  
-- Returns April  
SELECT {fn QUARTER( @date_exp )};  
-- Returns 2  
SELECT {fn WEEK( @date_exp )};  
-- Returns 16  

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

D. Usando uma função ODBC em um procedimento armazenado

O seguinte exemplo usa uma função ODBC em um procedimento armazenado:

CREATE PROCEDURE dbo.ODBCprocedure  
(  
    @string_exp NVARCHAR(4000)  
)  
AS  
SELECT {fn BIT_LENGTH( @string_exp )};  

E. Usando uma função ODBC em uma função definida pelo usuário

O seguinte exemplo usa uma função ODBC em uma função definida pelo usuário:

CREATE FUNCTION dbo.ODBCudf  
(  
    @string_exp NVARCHAR(4000)  
)  
RETURNS INT  
AS  
BEGIN  
DECLARE @len INT  
SET @len = (SELECT {fn BIT_LENGTH( @string_exp )})  
RETURN(@len)  
END ;  
GO
SELECT dbo.ODBCudf('Returns the length in bits.');  
--Returns 432  

F. Usando funções ODBC em instruções SELECT

As seguintes instruções SELECT usam funções ODBC:

DECLARE @string_exp NVARCHAR(4000) = 'Returns the length.';  
SELECT {fn BIT_LENGTH( @string_exp )};  
-- Returns 304  
  
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};  
-- Returns CONCAT returns a character string  
SELECT {fn CURRENT_DATE( )};  
-- Returns today's date  
SELECT {fn CURRENT_TIME(6)};  
-- Returns the time  
  
DECLARE @date_exp NVARCHAR(30) = '2007-04-21 01:01:01.1234567';  
SELECT {fn DAYNAME( @date_exp )};  
-- Returns Saturday  
SELECT {fn DAYOFMONTH( @date_exp )};  
-- Returns 21  
SELECT {fn DAYOFWEEK( @date_exp )};  
-- Returns 7  
SELECT {fn HOUR( @date_exp)};  
-- Returns 1   
SELECT {fn MINUTE( @date_exp )};  
-- Returns 1  
SELECT {fn SECOND( @date_exp )};  
-- Returns 1  
SELECT {fn MONTHNAME( @date_exp )};  
-- Returns April  
SELECT {fn QUARTER( @date_exp )};  
-- Returns 2  
SELECT {fn WEEK( @date_exp )};  
-- Returns 16  

Consulte Também

Funções internas (Transact-SQL)