SQLite で変数を宣言し、insert
操作で使用したいです。
MS SQL の場合と同様:
declare @name as varchar(10)
set name = 'name'
select * from table where name = @name
たとえば、last_insert_row
を取得して使用する必要がありますinsert
。
バインディングについて何かを見つけましたが、完全に理解したわけではありません。
ベストアンサー1
SQLite はネイティブ変数構文をサポートしていませんが、メモリ内の一時テーブルを使用すると実質的に同じことを実現できます。
私は大規模なプロジェクトに以下のアプローチを使用しましたが、うまく機能しました。
/* Create in-memory temp table for variables */
BEGIN;
PRAGMA temp_store = 2; /* 2 means use in-memory */
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;