La biblioteca UDF de InterBase Por Alfonso Ricaño Bringas InterBase es una base de datos extensible, es decir, que pueden incorporársele funciones externas que pueden ser utilizadas en las instrucciones SQL. Esto hace de InterBase una base de datos muy flexible, ya que no dependemos de un programa cliente para realizar funciones complejas sobre los datos. Esto se realiza por medio de las UDFs (User Defined Functions).
InterBase trae consigo un número de funciones que se necesitan frecuentemente. Estas funciones están dentro de una biblioteca UDF, llamada ib_udf.dll en Windows y en las plataformas Unix se llama ib_udf. Para utilizar esta biblioteca, se debe ejecutar un script de sql, llamad ib_udf.sql, en el directorio /examples/udf dentro del directorio de instalación de InterBase. Si deseas declarar solo algunas de las funciones, debes de editar el script. Algunas de estas UDFs deben ser llamadas utilizando el nuevo comando FREE_IT, solo si están escritas de tal manera que sean seguras en procesos (thread-safe), y utilizando malloc para reservar memoria dinámica. A continuación está la lista de funciones que vienen en la biblioteca UDF de InterBase:
Nombre de la función | Descripción | Entrada | Salida |
ABS() | Valor absoluto | Double precision | Double precision |
ACOS() | Arco coseno | Double precision | Double precision |
ASCII_CHAR() | Regresa un caracter basado en el código ASCII | Integer | Char(1) |
ASCII_VAL() | Regresa el código ASCII para el caracter dado | Char(1) | Integer |
ASIN() | Arco seno | Double precision | Double precision |
ATAN() | Arco tangente | Double precision | Double precision |
ATAN2() | Arco tangente dividido entre el segundo argumento | Double precision, Double precision | Double precision |
BIN_AND() | Operación AND sobre los bits | Integer | Integer |
BIN_OR() | Operación OR sobre los bits | Integer | Integer |
BIN_XOR() | Operación XOR sobre los bits | Integer | Integer |
CEILING() | Redondear al valor superior entero más cercano | Double precision | Double precision |
COS() | Coseno | Double precision | Double precision |
COSH() | Coseno hiperbólico | Double precision | Double precision |
COT() | Cotangente | Double precision | Double precision |
DIV() | División entera | Integer | Integer |
FLOOR() | Redondea hacia el valor inferior entero más cercano | Double precision | Double precision |
LN() | Logaritmo natural | Double precision | Double precision |
LOG() | Logaritmo del primer argumento, por la base del segundo argumento | Double precision, Double precision | Double precision |
LOG10() | Logaritmo base 10 | Double precision | Double precision |
LOWER() | Pasa todos los caracteres a minúsculas | Cstring(80) | Cstring(80) |
LTRIM() | Elimina los espacios a la izquierda | CString(80) | Cstring(80) |
MOD() | Residuo entre los dos argumentos | Integer, Integer | Integer |
PI() | Regresa el valor de PI (3.141592...) | -- | Double precision |
RAND() | Regresa un valor aleatorio | -- | Double precision |
RTRIM() | Elimina los espacios a la derecha | CString(80) | Cstring(80) |
SIGN() | Regresa -1, 0, o 1 | Double precision | Integer |
SIN() | Seno | Double precision | Double precision |
SINH() | Seno hiperbólico | Double precision | Double precision |
SQRT() | Raíz cuadrada | Double precision | Double precision |
STRLEN() | Longitud de la cadena | CString(32767) | Integer |
SUBSTR() | Subcadena, empezando a partir de la posición especificada por el segundo argumento, con una longitud igual al tercer argumento | CString(80), Smallint, Smallint | Cstring(80) |
TAN() | Tangente | Double precision | Double precision |
TANH() | Tangente hiperbólica | Double precision | Double precision |