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.