Saltar al contenido

Declarar variable en SQLite y usarla

Ten en cuenta que en las ciencias informáticas un problema casi siempre tiene más de una soluciones, por lo tanto nosotros te enseñaremos lo más óptimo y eficiente.

Solución:

SQLite no admite la sintaxis de variables nativas, pero puede lograr prácticamente lo mismo utilizando una tabla temporal en memoria.

He usado el siguiente enfoque para proyectos grandes y funciona de maravilla.

/* Create in-memory temp table for variables */
BEGIN;

PRAGMA temp_store = 2;
CREATE TEMP TABLE _Variables(Name TEXT PRIMARY KEY, RealValue REAL, IntegerValue INTEGER, BlobValue BLOB, TextValue TEXT);

/* Declaring a variable */
INSERT INTO _Variables (Name) VALUES ('VariableName');

/* Assigning a variable (pick the right storage class) */
UPDATE _Variables SET IntegerValue = ... WHERE Name = 'VariableName';

/* Getting variable value (use within expression) */
... (SELECT coalesce(RealValue, IntegerValue, BlobValue, TextValue) FROM _Variables WHERE Name = 'VariableName' LIMIT 1) ...

DROP TABLE _Variables;
END;

La solución de Herman funciona, pero se puede simplificar porque Sqlite permite almacenar cualquier tipo de valor en cualquier campo.

Aquí hay una versión más simple que usa uno Value campo declarado como TEXT para almacenar cualquier valor:

CREATE TEMP TABLE IF NOT EXISTS Variables (Name TEXT PRIMARY KEY, Value TEXT);

INSERT OR REPLACE INTO Variables VALUES ('VarStr', 'Val1');
INSERT OR REPLACE INTO Variables VALUES ('VarInt', 123);
INSERT OR REPLACE INTO Variables VALUES ('VarBlob', x'12345678');

SELECT Value
  FROM Variables
 WHERE Name = 'VarStr'
UNION ALL
SELECT Value
  FROM Variables
 WHERE Name = 'VarInt'
UNION ALL
SELECT Value
  FROM Variables
 WHERE Name = 'VarBlob';

Para una variable de solo lectura (es decir, un valor constante establecido una vez y utilizado en cualquier lugar de la consulta), utilice una Expresión de tabla común (CTE).

WITH const AS (SELECT 'name' AS name, 10 AS more)
SELECT table.cost, (table.cost + const.more) AS newCost
FROM table, const 
WHERE table.name = const.name

SQLite CON cláusula

Recuerda que puedes optar por la opción de agregar una reseña si chocaste tu escollo en el momento justo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *