Funções escalares ODBC (Transact-SQL)
É possível usar Funções escalares 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. Não funciona apenas em tipos de dados de cadeia de caracteres. Portanto, não converterá implicitamente string_exp em cadeia de caracteres. Em vez disso, retornará o tamanho (interno) de qualquer tipo de dados especificado. |
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. Não funciona apenas em tipos de dados de cadeia de caracteres. Portanto, não converterá implicitamente string_exp em cadeia de caracteres. Em vez disso, retornará o tamanho (interno) de qualquer tipo de dados especificado. |
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. |
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 |
DAYNAME( date_exp ) (ODBC 2.0) |
Retorna uma cadeia de caracteres que contém um nome específico de fonte de dados do dia (por exemplo, Sunday a Saturday ou Sun. a Sat. para a fonte de dados que utiliza o inglês, ou Sonntag a Samstag para a fonte de dados que utiliza o alemão) para a parte do dia de date_exp. |
DAYOFMONTH( date_exp ) (ODBC 1.0) |
Retorna o dia do mês com base no campo mês de date_exp como um valor inteiro no intervalo de 1 a 31. |
DAYOFWEEK( date_exp ) (ODBC 1.0) |
Retorna o dia da semana com base no campo semana de date_exp como um valor inteiro no intervalo de 1 a 7, em que 1 representa Sunday. |
HOUR( time_exp ) (ODBC 1.0) |
Retorna a hora com base no campo hora de 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 minuto de 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 um nome específico de fonte de dados do mês (por exemplo, January a December ou Jan. a Dec. para a fonte de dados que utiliza o inglês, ou Januar a Dezember para a fonte de dados que utiliza o alemão) para a parte do mês de date_exp. |
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 semana de 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 ;
SELECT dbo.ODBCudf('Returns the length.');
--Returns 38
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 MONTHNAME( @date_exp )};
-- Returns April
SELECT {fn QUARTER( @date_exp )};
-- Returns 2
SELECT {fn WEEK( @date_exp )};
-- Returns 16