Funciones escalares de ODBC (Transact-SQL)

Puede utilizar las Funciones escalares de ODBC en las instrucciones Transact-SQL. SQL Server interpreta estas instrucciones. Se pueden utilizar en procedimientos almacenados y funciones definidas por el usuario. Entre estas últimas se incluyen funciones de cadena, de número, de hora, de fecha, de intervalo y de sistema.

Uso

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

Funciones

Las tablas siguientes enumeran las funciones escalares de ODBC que no se duplican en Transact-SQL.

Funciones de cadena

Función

Descripción

BIT_LENGTH( string_exp ) (ODBC 3.0)

Devuelve la longitud en bits de la expresión de cadena.

No funciona únicamente para los tipos de datos de cadena. Por consiguiente, no convertirá implícitamente string_exp en una cadena sino que, en su lugar, devolverá el tamaño (interno) del tipo de datos que se proporcione.

CONCAT( string_exp1,string_exp2) (ODBC 1.0)

Devuelve una cadena de caracteres que es el resultado de concatenar string_exp2 con string_exp1. La cadena resultante es dependiente de DBMS. Por ejemplo, si la columna representada por string_exp1 contenía un valor NULL, DB2 devolvería NULL, pero SQL Server devolvería la cadena distinta de NULL.

OCTET_LENGTH( string_exp ) (ODBC 3.0)

Devuelve la longitud en bytes de la expresión de cadena. El resultado es el entero más pequeño que no es inferior al número de bits dividido por 8.

No funciona únicamente para los tipos de datos de cadena. Por consiguiente, no convertirá implícitamente string_exp en una cadena sino que, en su lugar, devolverá el tamaño (interno) del tipo de datos que se proporcione.

Función numéricas

Función

Descripción

TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0)

Devuelve numeric_exp truncado en posiciones de integer_exp a la derecha del separador decimal. Si integer_exp es negativo, numeric_exp se trunca en posiciones de |integer_exp| a la izquierda del separador decimal.

Funciones de hora, fecha e intervalo

Función

Descripción

CURRENT_DATE( ) (ODBC 3.0)

Devuelve la fecha actual.

CURRENT_TIME [(precisión de la hora)] (ODBC 3.0)

Devuelve la hora local actual. El argumento de precisión de la hora determina la precisión en segundos del valor devuelto

DAYNAME( date_exp ) (ODBC 2.0)

Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del día (por ejemplo, Sunday a Saturday o Sun. a Sat. para un origen de datos que utiliza inglés, o bien Sonntag a Samstag para un origen de datos que utiliza alemán) para la parte del día de date_exp.

DAYOFMONTH( date_exp ) (ODBC 1.0)

Devuelve el día del mes basado en el campo de mes en date_exp como un valor entero en el intervalo de 1 a 31.

DAYOFWEEK( date_exp ) (ODBC 1.0)

Devuelve el día de la semana basado en el campo de semana en date_exp como un valor entero en el intervalo de 1 a 7, donde 1 representa el domingo.

HOUR( time_exp ) (ODBC 1.0)

Devuelve la hora basada en el campo de hora en time_exp como un valor entero en el intervalo de 0 a 23.

MINUTE( time_exp ) (ODBC 1.0)

Devuelve los minutos basados en el campo de miuntos en time_exp como un valor entero en el intervalo de 0 a 59.

MONTHNAME( date_exp ) (ODBC 2.0)

Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del mes (por ejemplo, January a December o Jan. a Dec. para un origen de datos que utiliza inglés, o bien Januar a Dezember para un origen de datos que utiliza alemán) para la parte del mes de date_exp.

QUARTER( date_exp ) (ODBC 1.0)

Devuelve el trimestre en date_exp como un valor entero en el intervalo de 1 a 4, donde 1 representa el trimestre del 1 de enero al 31 de marzo.

WEEK( date_exp ) (ODBC 1.0)

Devuelve la semana del año basado en el campo de semana en date_exp como un valor entero en el intervalo de 1 a 53.

Ejemplos

A. Utilizar una función ODBC en un procedimiento almacenado

En el siguiente ejemplo se utiliza una función ODBC en un procedimiento almacenado:

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

B. Utilizar una Función ODBC en una función definida por el usuario

El siguiente ejemplo utiliza una función ODBC en una función definida por el usuario:

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. Utilizar una función ODBC en instrucciones SELECT

Las siguientes instrucciones SELECT utilizan funciones 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

Vea también

Referencia