Partilhar via


Funções escalares ODBC (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse 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)