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