Appearance
Funciones de Base de Datos y Resultset
Las funciones Lua de base de datos son las herramientas disponibles en los eventos de Autobase para interactuar con las bases de datos.
sql()
Ejecuta una consulta SQL y devuelve un Resultset con los resultados.
Sintaxis
lua
variable = sql(query)
variable = sql(query, connectionName)Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
query | string | Sí | Consulta SQL a ejecutar. Puede incluir parámetros con sintaxis |
connectionName | string | No | Nombre del origen de datos. Si se omite, usa el defaultConnection de la instancia |
Retorno
Devuelve un Resultset que contiene:
Fields: Lista de campos con nombre y tipo de datoRows: Lista de registros
Uso de parámetros
Las consultas pueden incluir variables Lua como parámetros usando la sintaxis .
lua
customerId = 5
orders = sql([[
SELECT id, order_date, total
FROM orders
WHERE customer_id = {{customerId}}
ORDER BY order_date DESC
]])Los parámetros son automáticamente convertidos al tipo apropiado y escapados para prevenir inyección SQL.
sql_to_vars()
Ejecuta una consulta SQL y asigna automáticamente los campos de la primera fila como variables individuales.
lua
sql_to_vars(query)
sql_to_vars(query, connectionName)rs_to_vars()
Convierte los campos de una fila específica de un Resultset existente en variables individuales.
lua
rs_to_vars(resultset, row)Objeto Resultset
El Resultset es el objeto que devuelve la función sql() cuando se ejecuta una consulta SQL. Representa un conjunto de resultados de una consulta y proporciona acceso estructurado a los datos devueltos.
Métodos en Lua
get_field_value()
lua
value = resultset:get_field_value(fieldName, row)Devuelve el valor del campo en la fila indicada, convertido al tipo correcto.
get_row_count()
lua
count = resultset:get_row_count()Devuelve la cantidad de filas en el Resultset como un number de Lua.
Creación y modificación de Resultset desde Lua
Además de obtener Resultset mediante sql(), es posible crear y manipular Resultset enteramente en memoria.
resultset()
Crea un nuevo Resultset vacío con colecciones inicializadas.
lua
rs = resultset()add_field()
Agrega un campo al Resultset.
lua
rs:add_field(name, dataType)Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | Nombre del campo |
dataType | string | Sí | Tipo de dato. Valores soportados: string, int, decimal, boolean, date, datetime, time |
Ejemplo:
lua
rs:add_field("id", "int")
rs:add_field("name", "string")
rs:add_field("price", "decimal")
rs:add_field("active", "boolean")add_row()
Agrega una fila al Resultset.
lua
rs:add_row(value1, value2, ...)La cantidad de valores debe coincidir exactamente con la cantidad de campos definidos. Cada valor se convierte automáticamente al tipo de dato del campo correspondiente.
Ejemplo:
lua
rs:add_row(1, "Mouse", decimal("12000.50"), true)
rs:add_row(2, "Keyboard", decimal("35000.00"), false)Soporta todos los tipos Lua: strings, numbers, booleanos, decimal(), date(), date_time() y time().
set_field_value()
Modifica el valor de un campo en una fila existente.
lua
rs:set_field_value(fieldName, rowIndex, value)Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
fieldName | string | Sí | Nombre del campo a modificar |
rowIndex | int | Sí | Índice de la fila (base 0) |
value | mixed | Sí | Nuevo valor convertido al tipo del campo |
Ejemplo:
lua
rs:set_field_value("name", 0, "Gaming Mouse")
rs:set_field_value("price", 1, decimal("32000.00"))clear_rows()
Elimina todas las filas del Resultset manteniendo los campos intactos.
lua
rs:clear_rows()Ejemplo completo
lua
productos = resultset()
productos:add_field("id", "int")
productos:add_field("nombre", "string")
productos:add_field("precio", "decimal")
productos:add_row(1, "Mouse", decimal("12000.50"))
productos:add_row(2, "Teclado", decimal("35000.00"))
productos:add_row(3, "Monitor", decimal("250000.00"))
productos:set_field_value("nombre", 1, "Teclado Mecánico")
productos:set_field_value("precio", 2, decimal("235000.00"))Ejemplos prácticos
Incluyen listados, cálculos y validaciones de datos usando Resultset.
Valores NULL
Los valores NULL de la base de datos se representan internamente como "###ABNULL###" y se convierten automáticamente a nil cuando se acceden mediante rs:get_field_value().