RDB$GET_CONTEXT()

3 comentarios

Descripción: Recupera el valor de una variable de contexto desde uno de los namespaces SYSTEM, USER_SESSION y USER_TRANSACTION

Tipo de resultado: Varchar(255)

Sintaxis:

RDB$GET_CONTEXT(‘namespace’, ‘nombre_variable’)

<namespace> = SYSTEM | USER_SESSION | USER_TRANSACTION

<nombre_variable> = una cadena alfanumérica que distingue mayúsculas de minúsculas y máximo 80 caracteres

Variables de contexto en el namespace SYSTEM

|-----------------------------------------------------------------------------------------------------------------|
| DB_NAME          La ruta completa a la Base de Datos o su alias                                                 |
| NETWORK_PROTOCOL El protocolo usado para la conexión: 'TCPv4', 'WNET', 'XNET', o NULL                           |
| CLIENT_ADDRESS   Para TCPv4 es su dirección IP. Para XNET es el ID del proceso local. Para los demás es NULL    |
| CURRENT_USER     Mismo que la variable global CURRENT_USER                                                      |
| CURRENT_ROLE     Mismo que la variable global CURRENT_ROLE                                                      |
| SESSION_ID       Mismo que la variable global CURRENT_CONNECTION                                                |
| TRANSACTION_ID   Mismo que la variabla global CURRENT_TRANSACTION                                               |
| ISOLATION_LEVEL  El nivel de aislamiento de la transacción actual: 'READ COMMITED', 'SNAPSHOT', o 'CONSISTENCY' |
| ENGINE VERSION   El número de la versión del Firebird                                                           |
|-----------------------------------------------------------------------------------------------------------------|

Ejemplos:

SELECT
   RDB$GET_CONTEXT('SYSTEM', 'DB_NAME')
FROM
   RDB$DATABASE

NEW.DIRECCION_USUARIO = RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')

INSERT INTO MiTabla
   (MiCampo)
   VALUES(RDB$GET_CONTEXT('USER_SESSION', 'MiVariable')

Artículo relacionado:

https://firebird21.wordpress.com/2013/04/14/rdbset_context/

RAND()

7 comentarios

Descripción: Devuelve un número al azar que se encuentra entre 0 y 1

Tipo de resultado: Doble precisión

Sintaxis:

RAND()

Ejemplo1:

SELECT
   RAND()
FROM
   RDB$DATABASE

Este SELECT devolverá un número al azar entre 0 y 0.99999999…

Ejemplo 2:

SELECT
   FLOOR(RAND() * 100)
FROM
   RDB$DATABASE

Este SELECT devolverá un número entero comprendido entre 0 y 99. ¿Por qué? Porque el menor valor posible es 0 y hay 100 valores posibles, por lo tanto el mayor número que puede devolver es 99.

Ejemplo 3:

SELECT
   FLOOR(RAND() * 101)
FROM
   RDB$DATABASE

Este SELECT devolverá un número entero comprendido entre 0 y 100. ¿Por qué? Porque el menor valor posible es 0 y hay 101 valores posibles, por lo tanto el mayor número que puede devolver es 100.

Ejemplo 4:

SELECT
   1 + FLOOR(RAND() * 100)
FROM
   RDB$DATABASE

Este SELECT devolverá un número entero comprendido entre 1 y 100. ¿Por qué? Porque el menor valor posible es 1 y hay 100 valores posibles, por lo tanto el mayor número que puede devolver es 100.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

POWER()

1 comentario

Descripción: Devuelve x elevado a la potencia y

Tipo de resultado: Doble precisión

Sintaxis:

POWER(x, y)

Si x es negativo, ocurrirá un error

Ejemplos:

SELECT
   POWER(2, 5)
FROM
   RDB$DATABASE

SELECT
   POWER(3, 4)
FROM
   RDB$DATABASE

El primer SELECT devolverá 32 porque 2 elevado a la 5ª potencia es 32. El segundo SELECT devolverá 81 porque 3 elevado a la 4ª potencia es 81.