Un componente de registro de tipo sqlRecord se declara en un archivo EGL, como se describe en el apartado
Formato fuente EGL. Para obtener una visión general de la forma en que EGL interactúa con bases de datos relacionales, consulte el apartado Soporte SQL.
A continuación se ofrece un ejemplo de componente de registro SQL:
Record mySQLRecordPart type sqlRecord
{
tableNames = [["mySQLTable", "T1"]],
keyItems = ["myHostVar01"],
defaultSelectCondition =
#sqlCondition{ // sin espacio entre #sqlCondition y la llave
myHostVar02 = 4 -- iniciar cada comentario SQL
-- con guión doble
}
}
// La estructura de un registro SQL no tiene jerarquía
10 myHostVar01 myDataItemPart01
{
column = "column01",
isNullable = no,
isReadOnly = no
};
10 myHostVar02 myDataItemPart02
{
column = "column02",
isNullable = yes,
isReadOnly = no
};
end
El diagrama de sintaxis de un componente de registro SQL es el siguiente:
- Record nombreComponenteRegistro sqlRecord
- Identifica el componente como componente de registro de tipo sqlRecord y especifica el nombre. Para conocer las normas, consulte el apartado Convenios de denominación.
- tableNames = [["nombre", "etiqueta"],
...., ["nombre", "etiqueta"]]
- Lista la tabla o tablas a las que accede el registro SQL. Si especifica una etiqueta para un nombre de tabla determinado, ésta se incluye en las sentencias SQL por omisión asociadas con el registro.
Puede incluir comillas (") en un nombre de tabla colocando el carácter de escape (\) delante de ellas. Ese convenio es necesario, por ejemplo, cuando un nombre de tabla es una de las siguientes palabras reservadas SQL:
- CALL
- FROM
- GROUP
- HAVING
- INSERT
- ORDER
- SELECT
- SET
- UPDATE
- UNION
- VALUES
- WHERE
Cada uno de estos nombres debe especificarse entre comillas. Si el único nombre de tabla es
SELECT, por ejemplo, la cláusula tableNames será la siguiente:
tableNames=[["\"SELECT\""]]
Una situación similar se produce cuando una de dichas palabras reservadas SQL se utiliza como
nombre de columna.
- tableNameVariables = [["nomVar", "etiqueta"],
...., ["nomVar", "etiqueta"]]
-
Lista una o varias variables de nombre de tabla, cada una de las cuales contiene el nombre de una tabla a la que accede el registro SQL. El nombre de una tabla sólo se determina en tiempo de ejecución.
La variable puede estar calificada por un nombre de biblioteca y puede tener subíndices.
Si especifica una etiqueta para una variable de nombre de tabla determinada, ésta se incluye en las sentencias SQL por omisión asociadas con el registro.
Puede utilizar variables de nombre de tabla aisladas o junto con nombres de tabla, pero la utilización de variables de nombre de tabla garantiza que las características de la sentencia SQL sólo se determinarán en tiempo de ejecución.
Puede incluir comillas (") en una variable de nombre de tabla colocando el carácter de escape (\) delante de ellas.
- keyItems = = ["elemento",
...., "elemento"]
- Indica que la columna asociada con un elemento de registro determinado forma parte de la clave
de la tabla de base de datos. Si la tabla de base de datos tiene una clave compuesta, el orden de los elementos del registro definidos como claves debe coincidir con el orden de las columnas que son claves de la tabla de base de datos.
- defaultSelectCondition = #sqlCondition { condiciónSQL }
- Define parte del criterio de búsqueda de la cláusula WHERE de una sentencia SQL implícita. El valor de defaultSelectCondition no incluye la palabra clave SQL WHERE.
EGL proporciona una sentencia SQL implícita con una cláusula WHERE cuando se codifica una de estas sentencias EGL:
- get
- open
- execute (sólo al solicitar una sentencia SQL implícita DELETE o
UPDATE)
Las sentencias SQL implícitas no se almacenan en el código fuente EGL.
Para obtener una visón general de esas sentencias, consulte el apartado Soporte SQL.
- containerContextDependent
- Indica si el registro hace referencia como mínimo a un elemento de datos cuya definición varía
según el programa, la biblioteca o el manejador de páginas que utiliza el registro. Para obtener detalles, consulte el apartado containerContextDependent.
- nivel
- Entero que indica la posición jerárquica de un campo de estructura. Si excluye este valor, el
componente es un componente de registro; si incluye este valor, el componente es un componente de
registro fijo.
- nombreCampoEstructura
- Nombre de un campo de estructura. Para conocer reglas, consulte la sección Convenios de
denominación.
- tipoPrimitivo
- El tipo primitivo asignado al campo de estructura.
- longitud
- La longitud del campo de estructura, que es un entero. El valor de un área de memoria
basada en el elemento de estructura incluye el número especificado de caracteres o dígitos.
- decimales
- Para un tipo numérico (BIN, DECIMAL, NUM, NUMC o PACF), puede especificar decimales,
que es un entero que representa el número de posiciones después de la coma decimal. El número máximo de posiciones decimales es el menor de dos números: 18 o el número de dígitos declarado como longitud. La coma decimal no se almacena con los datos.
- "máscaraFechaHora"
- Para elementos de tipo INTERVAL o TIMESTAMP, puede especificar máscaraFechaHora", que asigna
un significado (como por ejemplo "dígito de año") a una posición dada en el valor de elemento. La
máscara no se almacena con los datos.
- nombreComponenteElementoDatos
- Especifica el nombre de un componente dataItem que actúa como modelo de formato del elemento de estructura que se declara. Para obtener detalles, consulte el apartado typeDef.
- embed nombreComponenteRegistroSQL
- Especifica el nombre de un componente de registro de tipo sqlRecord e incorpora la estructura de dicho componente de registro en el registro actual. La estructura incorporada no añade un nivel de jerarquía al registro actual. Para obtener detalles, consulte el apartado typeDef.
- propiedad
- Una propiedad de elemento, como se describe en el apartado Visión general de las propiedades EGL y alteraciones temporales.
En un registro SQL, las propiedades de campo SQL son particularmente importantes.