Los componentes de datos más importantes que se han creado son los componentes SQLRecord. Los campos de estos componentes de registro (Record) están relacionados con las columnas de la base de datos. Al crear una variable basada en este registro, puede utilizar dicha variable para representar una fila nueva o existente de la base de datos. Aunque cada SQLRecord creado por el asistente de aplicación de acceso a datos sólo compara las columnas de una única tabla, más adelante en esta guía de aprendizaje aprenderá a fusionar datos de varias tablas en un único registro (proceso denominado unión de tablas en SQL).
record Customer type sqlRecord {
tablenames=[["EGL.CUSTOMER"]],
keyItems=[CustomerId]
}
CustomerId CustomerId {column="EGL.CUSTOMER.CUSTOMER_ID"};
FirstName FirstName {column="EGL.CUSTOMER.FIRST_NAME",
sqlVariableLen=yes, maxLen=30, isSqlNullable=yes};
LastName LastName {column="EGL.CUSTOMER.LAST_NAME",
sqlVariableLen=yes, maxLen=30, isSqlNullable=yes};
...
Directions Directions {column="EGL.CUSTOMER.DIRECTIONS",
sqlVariableLen=yes, maxLen=255, isSqlNullable=yes};
end
El código tablenames=[["EGL.CUSTOMER"]] especifica la
tabla de la base de datos con la que se relaciona este registro, y las propiedades
column de cada uno de los campos especifican la columna de
la tabla con la que se relaciona el campo. El código
keyItems=[CustomerId] indica que el campo CustomerId, y por extensión
la columna EGL.CUSTOMER.CUSTOMER_ID de la base de datos, son la clave primaria de esta
tabla. | Mandato EGL | Ejemplo de EGL | Mandato SQL |
|---|---|---|
| add | add myRecord; |
INSERT |
| get | get myRecord; |
SELECT |
| replace | replace myRecord; |
UPDATE |
| delete | delete myRecord; |
DELETE |
add myCustomer;Si coloca el cursor sobre el registro myClient, pulsa el botón derecho del ratón y luego pulsa , el editor de EGL expande la sentencia add para mostrar el código SQL, haciéndolo explícito:

add myCustomer with
#sql{
insert into EGL.CUSTOMER
(EGL.CUSTOMER.CUSTOMER_ID, EGL.CUSTOMER.FIRST_NAME,
EGL.CUSTOMER.LAST_NAME, EGL.CUSTOMER.PASSWORD,
EGL.CUSTOMER.PHONE, EGL.CUSTOMER.EMAIL_ADDRESS,
EGL.CUSTOMER.STREET, EGL.CUSTOMER.APARTMENT,
EGL.CUSTOMER.CITY, EGL.CUSTOMER."STATE",
EGL.CUSTOMER.POSTALCODE, EGL.CUSTOMER.DIRECTIONS)
values
(:myCustomer.CustomerId, :myCustomer.FirstName,
:myCustomer.LastName, :myCustomer.Password,
:myCustomer.Phone, :myCustomer.EmailAddress,
:myCustomer.Street, :myCustomer.Apartment,
:myCustomer.City, :myCustomer.State,
:myCustomer.Postalcode, :myCustomer.Directions)
};
En esencia, no ha cambiado nada; simplemente, EGL ha expuesto el código
SQL que genera a partir de la sentencia add.
Ahora que el código es explícito, puede editar el SQL predeterminado generado a partir
del mandato EGL. La cláusula VALUES de la sentencia SQL INSERT lista los valores que deben insertarse en la fila de base de datos nueva, en este caso los campos en el registro myCustomer. Cada valor que se encuentra dentro del bloque #sql va precedido por un signo de dos puntos (:), que indica que no se trata de un valor SQL, sino de un valor EGL. Estos valores EGL utilizados en el código SQL explícito se conocen como variables de lenguaje principal.
function getCustFromState(customerState CHAR(2) in,
customers Customer[] out)
get customers with
#sql{
select *
from EGL.CUSTOMER
where EGL.CUSTOMER."STATE" like :customerState
};
end
Esta función recibe un parámetro CHAR de dos bytes y lo utiliza como
variable de lenguaje principal para recuperar los registros cuyo campo STATE coincide con
esos dos caracteres. Para que EGL funcione con código SQL explícito, es necesario
utilizar con mucho cuidado las variables de lenguaje principal.