En general, si quieres saber el contenido de un dominio puedes usar al programa ISQL.EXE para esa tarea, escribiendo el comando SHOW DOMAIN y a continuación el nombre del dominio que te interesa.

EXTRAER1

Captura 1. Si haces clic en la imagen la verás más grande

 Otra posibilidad es usar un programa tal como el EMS SQL Manager.

EXTRAER2

Captura 2. Si haces clic en la imagen la verás más grande

Pero ¿y si necesitamos obtener esos valores en nuestra aplicación? En ese caso podríamos escribir un stored procedure similar al siguiente:

CREATE PROCEDURE EXTRAER_CONTENIDO_DOMINIO
   RETURNS(
      ftcNombreDominio    VARCHAR(32),
      ftcContenidoDominio VARCHAR(1024))
AS
BEGIN

   FOR SELECT
      RDB$FIELD_NAME,
      SUBSTRING(RDB$VALIDATION_SOURCE FROM POSITION('VALUE IN(', RDB$VALIDATION_SOURCE) + 9 FOR 30)
   FROM
      RDB$FIELDS
   WHERE
      RDB$VALIDATION_SOURCE IS NOT NULL
   INTO
      :ftcNombreDominio,
      :ftcContenidoDominio
   DO BEGIN
      IF(RIGHT(ftcContenidoDominio, 1) = ')') THEN
         ftcContenidoDominio = LEFT(ftcContenidoDominio, CHAR_LENGTH(ftcContenidoDominio) - 1);
      SUSPEND;
   END

END;

Y luego de escribir un SELECT * FROM EXTRAER_CONTENIDO_DOMINIO obtendríamos como resultado algo así:

EXTRAER3

Captura 3. Si haces clic en la imagen la verás más grande

Como puedes ver, en el resultado tenemos todos los dominios y el contenido de cada uno de ellos. Desde luego que si te interesa conocer el contenido de un solo dominio (por ejemplo, del dominio D_BOOLEAN) podrías especificarlo en la cláusula WHERE, algo como:

SELECT
   *
FROM
   EXTRAER_CONTENIDO_DOMINIO
WHERE
   ftcNombreDominio = 'D_BOOLEAN'

Donde obtendremos un resultado similar al siguiente:

EXTRAER4

Captura 4. Si haces clic en la imagen la verás más grande

En este caso, solamente vemos el contenido del dominio D_BOOLEAN porque eso fue lo que le pedimos al Firebird que nos muestre.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

Anuncios