Variables en SQLite

Bilal Shahid 21 junio 2023
  1. Variables en SQLite
  2. Tipos de variables en SQLite
  3. Declarar variables en SQLite
  4. Usar las variables declaradas en SQLite
Variables en SQLite

La creación y el uso de funciones pueden resultar increíblemente beneficiosas cuando se construyen consultas en SQLite. Una parte de estas funciones y procedimientos utiliza variables dentro de SQLite.

Variables en SQLite

Las variables pueden resultar increíblemente beneficiosas si se usan correctamente. Es mejor explicarles usando un ejemplo.

Suponga que crea un procedimiento o función para sumar dos números. Esto se puede lograr fácilmente utilizando el operador adecuado.

Sin embargo, si fuéramos a hacerlo un poco más complejo y dijéramos que obtendría estos dos números como entrada del usuario, no sería tan simple.

No puede codificar los valores porque el usuario puede ingresar cualquier número. Aquí es cuando una variable es útil.

Tomará la entrada del usuario y la almacenará en una variable que permanecerá hasta que se sobrescriba o el programa finalice. Ahora, en lugar de agregar dos valores aleatorios, puede agregar las variables que contienen los dos valores seleccionados por el usuario.

Esta puede almacenarse en una tercera variable o de las dos existentes si no se van a utilizar más adelante. Con las variables, puede almacenar y manipular fácilmente cualquier valor de múltiples tipos de datos dentro de su procedimiento.

Esto los hace cruciales para cualquier función, ya que es imposible confiar en los valores codificados.

Tipos de variables en SQLite

Hay múltiples tipos de variables en SQLite. Esto significa que tienen diferentes tipos de datos para decirle al sistema qué datos se almacenarán en esa variable.

Estos son algunos de los tipos de datos disponibles en SQLite:

  • NULL: Este tipo añade un valor nulo a la variable.
  • INTEGER: Esto es para enteros con signo. Todos los números positivos y negativos están en 0, 1, 2, 3, 4, 6 u 8 bytes.
  • REAL: Esto es para una variable de punto flotante que significa un número positivo o negativo con un punto decimal. Esto se almacena como un número de 8 bytes.
  • TEXTO: como sugiere el nombre, TEXTO incluirá una cadena de texto. Esto a menudo se almacena utilizando una codificación de base de datos como UTF-8, UTF-16BE o UTF-16LE.
  • BLOB: Esta es una variable especial en la que los datos se almacenan de la misma forma en que fueron ingresados, adaptándose al tipo de datos que se haya utilizado.

Es importante tener en cuenta que si alguna vez usó un tipo de datos incorrecto o desea cambiarlo en algún lugar en el medio del código, siempre puede cambiarlo usando la expresión CAST. Esto alterará el tipo de datos y el contenido, así que utilícelo con cuidado; puede terminar con los valores ASCII correspondientes donde no los necesita.

Declarar variables en SQLite

Para poder usar variables en SQLite, primero deberá declararlas. El proceso de declaración es bastante simple, según el tipo de variable que intente crear; sin embargo, es ligeramente diferente a la sintaxis nativa.

En SQLite, deberá realizar el proceso virtualmente utilizando una tabla temporal en memoria. Aquí hay un ejemplo de cómo se puede hacer:

BEGIN;

/* This tells your system to use in-memory */
PRAGMA temp_store = 2;

/* creating the temp table with the variables you need */
CREATE TEMP TABLE Vars(text_val TEXT PRIMARY KEY, real_val REAL, integer_val INTEGER, blob_value BLOB, text_val TEXT);

/* The declaration part */
INSERT INTO Vars (text_val)
VALUES ('Any value');

DROP TABLE Vars;

END;

Al usar el código anterior, puede trabajar declarando una variable indirectamente. Aquí, primero debe crear una tabla temporal en memoria; con esto, puede agregar columnas con sus tipos de datos preferidos y luego usar la cláusula INSERT para almacenar valores en ellas.

Las cláusulas BEGIN y END ayudan a identificar dónde comienza y termina el procedimiento, por lo que deben incluirse al usar este método. Después de esto, puede manipular y usar los datos como prefiera.

Esto se ha explicado con mayor detalle a continuación.

Usar las variables declaradas en SQLite

Ahora sabe cómo declarar variables, pero aprender a usarlas es igual de importante. Sin esto, no podrá obtener ningún uso de las variables que ha declarado.

Hagámoslo usando una versión actualizada del mismo código usado anteriormente.

BEGIN;

/* Add codes from above to use in memory,
create the temp table,
and declaration first*/

/* Assignment (select a storage class according to your requirements) */
UPDATE Vars SET integer_val= ...
WHERE text_val= 'Any value';

/* Get the value of the variable that is to be used in the expression) */
...
(SELECT coalesce(real_val, integer_val, blob_value, text_val)
FROM Vars
WHERE text_val= 'Any value' LIMIT 1) ...

DROP TABLE Vars;

END;

Este código tiene algunas adiciones que le permiten asignar valores de variables. Primero, debe asignar valores a sus variables y luego vincularlos nuevamente para usarlos en una expresión.

Finalmente, la tabla se elimina una vez que se completa la función. Siempre puede agregar líneas de código adicionales para permitir que las variables se comporten de acuerdo con sus requisitos.

Sin embargo, al soltar la tabla se eliminan todos los datos almacenados, así que asegúrese de hacerlo una vez que haya terminado de usar todo.

Otro método es el uso de la cláusula WITH:

...
WITH const AS (SELECT 'any value' AS text_val, 10 AS int_val)
SELECT table.cost, (table.cost + const.int_val) AS cost2
FROM table, const
WHERE table.text_val= const.text_val

Aquí, se agregan dos variables y se almacenan en una de ellas.

Nota: siempre puedes reemplazar esto con la unión de una serie de clases después de que se inserten en una tabla. La lógica puede variar, pero el concepto sigue siendo el mismo.

Eso fue todo lo que necesitas saber sobre las variables en SQLite. Ahora, puede crearlos y usarlos fácilmente según sus preferencias.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub