1. ホーム
  2. sql

[解決済み] SQLiteで変数を宣言して使う

2022-10-04 13:58:03

質問

SQLiteで変数を宣言し、その変数を insert の操作で使用することができます。

MS SQLのように

declare @name as varchar(10)
set name = 'name'
select * from table where name = @name

例えば last_insert_row で使用し、それを insert .

バインディングについて何か見つけたのですが、よく理解できませんでした。

どのように解決するのですか?

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;