Funciones FIREBIRD
FUNCIONES INTERNAS DE FIREBIRD |
|
AGRUPAMIENTOS Y SUMAS |
|
ABS ( EXPRESION ) | DESCRIPCION: Devuelve el valor absoluto de un campo dado. TIPO RESULTADO: Numerico EJEMPLO: Select ABS(valor) from TABLAFUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 2.1 |
COUNT ( CAMPO ) |
DESCRIPCION: Devuelve el número de registros encontrados segun la selección de registros que se haya definido en la parte WHERE de la SQL. Select count(*) from CLIENTES |
AVG ( EXPRESION ) | DESCRIPCION: Delvuelve el promedio de los valores del campo seleccionado. EJEMPLO: Select cod_cliente,avg(ventas) from CLIENTES |
MIN ( EXPRESION ) | DESCRIPCION: Devuelve el valor mas bajo del campo seleccionado. TIPO RESULTADO: Varía EJEMPLO: Select codigo,min(pvp) from ARTICULOS FUNCIONAL EN: DSQL, ESQL, PSQL |
MAX ( EXPRESION ) | DESCRIPCION: Devuelve el valor mas alto del campo seleccionado. TIPO RESULTADO: Varía EJEMPLO: Select cod_cliente,max(ventas) from CLIENTES FUNCIONAL EN: DSQL, ESQL, PSQL |
SUM( campo ) | DESCRIPCION: Devuelve la suma de los valores del campo seleccionado. EJEMPLO: Select cod_cliente,sum(ventas) from ARTICULOS |
CONDICIONALES | |
CASE WHEN condición then resultado [WHEN...] [ELSE resultado] END |
DESCRIPCION: Devuelve un valor de un número de posibilidades. CASE SIMPLE. EJEMPLO: Select name, edat, case upper(sexo) when 'H' then 'Hombre' when 'm' then 'Mujer' else 'Unknown' end, religion from personas |
CASE condición WHEN valor THEN resultado [WHEN ...] [ELSE resultado] END |
DESCRIPCION: Devuelve un valor de un número de posibilidades. CASE CONDICIONAL. EJEMPLO: CanVote = case when Age >= 18 then 'Yes' when Age < 18 then 'No' else 'Unsure' end; |
COALESCE ( , [, ... ]) |
select coalesce (Nickname, FirstName, 'Mr./Mrs.') || ' ' || LastName as FullName from PersonsFUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 1.5 |
CADENAS |
|
BIT_LENGHT (STR) |
DESCRIPCION: Devuelve la longitud en bits de la cadena de entrada. select bit_length('Hello!') from rdb$database -- Devuelve 48FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 2.0 MODIFICADA EN: Versión Firebird 2.1 |
CHAR_LENGTH (STR) | DESCRIPCION: Devuelve la longitud de caracteres de la cadena de entrada. TIPO RESULTADO: Integer EJEMPLO: Select char_length('Hello!') from rdb$database -- Devuelve 6FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 2.0 MODIFICADA EN: Versión Firebird 2.1 |
OCTET_LENGTH (STR) |
DESCRIPCION: Devuelve la longitud en bytes (octetos) de la cadena de entrada. select octet_length('Hello!') from rdb$database -- Devuelve 6FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 2.0 MODIFICADA EN: Versión Firebird 2.1 |
|
DESCRIPCION: Recupera cualquier secuencia de caracteres de una cadena. SUBSTRING('FIREBIRD' FROM 2 FOR 1) 'I' SUBSTRING('FIREBIRD' FROM 2 FOR 2) 'IR' SUBSTRING('FIREBIRD' FROM 1 FOR 3) 'FIR'FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 1.0 MODIFICADA EN: Versión Firebird 2.0 y 2.1 |
TRIM ([] |
DESCRIPCION: Quita los espacios a la derecha (opcionalmente, otros caracteres) de la cadena de entrada. select trim (' Waste no space ') from rdb$database -- Devuelve 'Waste no space'FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 2.0 MODIFICADA EN: Versión Firebird 2.1
|
LOWER ( STR ) |
DESCRIPCION: Convierte una cadena en minusculas. SELECT codigo,LOWER(Nombre) from usuarios FUNCIONAL EN: DSQL, ESQL, PSQL |
UPPER (STR) |
DESCRIPCION: Convierte una cadena en mayúsculas.
SELECT codigo,Upper(Nombre) from usuarios FUNCIONAL EN: DSQL, ESQL, PSQL |
OTROS |
|
CAST ( expression AS { datatype | [TYPE OF] domain }) |
DESCRIPCION: Se usa para convertir un tipo de datos en otro dentro de una instrucción SELECT, por lo general en la cláusula WHERE, para comparar los diferentes tipos de datos.
SELECT CAST('NOW' AS TIMESTAMP) AS TIME_FINISHED FROM RDB$DATABASEFUNCIONAL EN: DSQL, ESQL, PSQL AGREGADA EN: IB MODIFICADA EN: Versión Firebird 2.0 y 2.1 |
EXTRACT ( FROM ) |
DESCRIPCION:Devuelve una variedad de elementos extraídos mediante la descodificación de los campos de tipo fecha / hora. Puede funcionar en los dialectos 1 y 3. SELECT IRST_NAME ||' '||LAST_NAME AS FULL_NAME, EXTRACT(MONTH FROM DATE_OF_BIRTH)||'/'||EXTRACT (DAY FROM DATE_OF_BIRTH) AS BIRTHDAY ROM MEMBERSHIP WHERE FIRST_NAME IS NOT NULL AND LAST_NAME IS NOT NULL SELECT FIRST_NAME ||' '||LAST_NAME AS FULL_NAME, EXTRACT(MONTH FROM DATE_OF_BIRTH)||'/'||EXTRACT (DAY FROM DATE_OF_BIRTH) AS BIRTHDAY FROM MEMBERSHIP WHERE FIRST_NAME IS NOT NULL AND LAST_NAME IS NOT NULL ORDER BY 2;FUNCIONAL EN: DSQL, ESQL, PSQL AGREGADA EN: IB 6 MODIFICADA EN: Versión Firebird 2.1 |
VARIABLES DEL SISTEMA |
|
CURRENT_CONNECTION |
DESCRIPCION: Devuelve el identificador de la conexión en curso. select current_connection from rdb$database execute procedure P_Login(current_connection)FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 1.5 MODIFICADA EN: Versión Firebird 2.1 |
CURRENT_DATE |
Devuelve la fecha del sistema.Devuelve TIMESTAMP. La fecha del sistema que está ejecutando el servidor Firebird. No hay ninguna zona horaria asociada con la fecha actual del sistema. |
CURRENT_ROLE |
DESCRIPCION: Devuelve el ROL de la conexion en curso. Si no esta activa devuelve NONE. if (current_role <> 'MANAGER') then exception only_managers_may_delete; else delete from Customers where custno = :custno;FUNCIONAL EN: DSQL, PSQL AGREGADA EN: Versión Firebird 1.0 |
CURRENT_TIME [( precision )]
precision ::= 0 | 1 | 2 | 3
|
DESCRIPCION: Establece la precision en se se medirá la hora.
select current_time from rdb$database -- returns e.g. 14:20:19.6170 select current_time(2) from rdb$database -- returns e.g. 14:20:23.1200
FUNCIONAL EN: DSQL, PSQL , ESQL |
CURRENT_TIMESTAMP [( precision )]
precision ::= 0 | 1 | 2 | 3
|
DESCRIPCION: Establece la precision en se se medira la Fecha y Hora. select current_timestamp from rdb$database -- returns e.g. 2008-08-13 14:20:19.6170 select current_timestamp(2) from rdb$database -- returns e.g. 2008-08-13 14:20:23.1200FUNCIONAL EN: DSQL, PSQL , ESQL MODIFICADA EN: Versión Firebird 2.0 |
CURRENT_TRANSACTION |
DESCRIPCION: Devulve el identificador de la transacción activa. select current_transaction from rdb$database New.Txn_ID = current_transaction;FUNCIONAL EN: DSQL, PSQL MODIFICADA EN: Versión Firebird 2.5 |
CURRENT_USER |
DESCRIPCION: Devuelve el nombre del usuario conectado actualmente. Es totalmente equivalente al usuario. create trigger bi_customers for customers before insert as begin New.added_by = CURRENT_USER; New.purchases = 0; end FUNCIONAL EN: DSQL, PSQL MODIFICADA EN: Versión Firebird 1.0 |
DELETING |
DESCRIPCION: Disponible solo en TRIGGERS, Borrando indica si se esta realizando un operacion de borrado en ese momento.Para uso en acción de múltiples factores desencadenantes. TIPO TIPO RESULTADO: BOOLEAN. if (deleting) then begin insert into Removed_Cars (id, make, model, removed) values (old.id, old.make, old.model, current_timestamp); endFUNCIONAL EN: PSQL AGREGADA EN: Versión Firebird 1.5 |
INSERTING |
DESCRIPCION: Disponible sólo en TRIGGERS, insertando indica si se esta realizando un operacion operación de inserción en ese momento. Para uso en acción de múltiples factores desencadenantes. if (inserting or updating) then begin if (new.serial_num is null) then new.serial_num = gen_id(gen_serials, 1); endFUNCIONAL EN: PSQL AGREGADA EN: Versión Firebird 1.5 |
NEW |
DESCRIPCION: NEW contiene la nueva versión de un registro de base de datos que acaba de insertar o actualizar. A partir de Firebird 2.0 es de sólo lectura en desencadenador es AFTER. |
OLD |
DESCRIPCION: OLD contiene la versión existente de un registro de base de datos justo antes de un borrado o actualización. A partir de Firebird 2.0 es de sólo lectura. |
'NOW' |
DESCRIPCION: 'NOW' no es una variable sino una cadena literal. Es, sin embargo, especial en el sentido de que cuando CAST () a una fecha y tipo de tiempo, obtendrá la fecha actual y / o tiempo. La parte fraccionaria de la época solían ser siempre ".0000", dando una precisión eficaz segundos. En Firebird 2.0, la precisión es de 3 decimales, es decir, milésimas de segundo. "Ahora" es entre mayúsculas y minúsculas, y el motor ignora espacios iniciales o finales cuando se lanza. select 'Now' from rdb$database -- returns 'Now' select cast('Now' as date) from rdb$database -- returns e.g. 2008-08-13 select cast('now' as time) from rdb$database -- returns e.g. 14:20:19.6170 select cast('NOW' as timestamp) from rdb$database -- returns e.g. 2008-08-13 14:20:19.6170FUNCIONAL EN: DSQL, PSQL , ESQL MODIFICADA EN: Versión Firebird 2.0 |
ROW_COUNT |
DESCRIPCION:La variable de contexto ROW_COUNT contiene el número de filas afectadas por la declaración más reciente DML (INSERT, UPDATE, DELETE, SELECT o FETCH) en el gatillo actual, el procedimiento almacenado o bloque de ejecución. update Figures set Number = 0 where id = :id; if (row_count = 0) then insert into Figures (id, Number) values (:id, 0);FUNCIONAL EN: PSQL AGREGADA EN: Versión Firebird 1.5 MODIFICADA EN: Versión Firebird 2.0 |
SQLCODE |
DESCRIPCION: Manejando un bloque WHEN SQLCODE, la variable de contexto SQLCODE contiene el código SQL actual de error. Lo mismo es TRUE en un bloque WHEN ANY si su ejecución fue provocada por un error de SQL, de lo contrario contiene 0. SQLCODE también es 0 en WHEN GDSCODE y WHEN EXCEPTION, así como en cualquier otro lugar en PSQL. when any do begin if (sqlcode <> 0) then Msg = 'An SQL error occurred!'; else Msg = 'Something bad happened!'; exception ex_custom Msg; endFUNCIONAL EN: PSQL AGREGADA EN: Versión Firebird 1.5
|
UPDATING |
DESCRIPCION: Disponible sólo en triggers, actualizando indica si se esta realizando un operacion de actualizacion en ese momento.Para uso en acción de múltiples factores desencadenantes. if (inserting or updating) then begin if (new.serial_num is null) then new.serial_num = gen_id(gen_serials, 1); end FUNCIONAL EN: PSQL |
GDSCODE |
DESCRIPCION: contiene una representación numérica del código de Firebird actual de error. A partir de Firebird 2.0, el mismo es TRUE en un bloque WHEN ANY si su ejecución fue provocada por un error de Firebird, de lo contrario contiene 0. GDSCODE también es 0 en WHEN SQLCODE y WHEN EXCEPTION, así como en cualquier otro lugar en PSQL. TIPO RESULTADO: INTEGER when gdscode 335544551, gdscode 335544552, gdscode 335544553, gdscode 335544707 do begin execute procedure log_grant_error(gdscode); exit; endFUNCIONAL EN: PSQL AGREGADA EN: Versión Firebird 1.5 MODIFICADA EN: Versión Firebird 2.0 |
____________________________________________________________________________________
FUNCIONES UDF "EXTERNAS" DE FIREBIRD |
|
MATEMATICAS |
|
ABS (number ) |
DESCRIPCION: Devuelve el valor absoluto del campo seleccionado. |
ACOS (number ) |
DESCRIPCION: Devuelve el arco coseno del campo seleccionado. |
ASIN ( number ) |
DESCRIPCION: Devuelve el arco seno del campo seleccionado. |
ATAN ( number ) |
DESCRIPCION: Devuelve el arco tangente del campo seleccionado. |
ATAN2 (x,y ) |
DESCRIPCION: Devuelve la tangente inversa de las coordenadas especificada en los valores introducidos (x,y). El resultado viene dado en radianes. |
BIN_AND ( number [, number ...]) |
DESCRIPCION: Devuelve el resultado de la operación AND en el argumento. |
BIN_OR ( number [, number ...]) |
DESCRIPCION: Devuelve el resultado de la operación OR en el argumento. |
BIN_XOR ( number [, number ...]) |
DESCRIPCION: Devuelve el resultado de la operación XOR en el argumento. |
CEIL[ING] ( number ) |
DESCRIPCION: Devuelve el menor número entero que es mayor que o igual al valor. |
COS ( angle ) |
DESCRIPCION: Devuelve el coseno del campo seleccionado. |
COSH ( number ) |
DESCRIPCION: Devuelve el coseno hiperbolico del campo seleccionado. |
COT ( angle ) |
DESCRIPCION: Devuelve la cotangente de un ángulo. El argumento debe ser dado en radianes. |