Quero declarar uma variável no SQLite e usá-la na insert
operação.
Como no MS SQL:
declare @name as varchar(10)
set name = 'name'
select * from table where name = @name
Por exemplo, vou precisar obter last_insert_row
e usar em insert
.
Eu descobri algo sobre vinculação, mas não entendi bem.
sql
sqlite
variables
declaration
Muhammad Nour
fonte
fonte
Respostas:
O SQLite não oferece suporte à sintaxe de variável nativa, mas você pode obter virtualmente o mesmo usando uma tabela temporária na memória.
Usei a abordagem abaixo para grandes projetos e funciona perfeitamente.
fonte
PRAGMA temp_store
configuração. Na verdade, de acordo com os documentos online , a configuração padrão é armazenar arquivos temporariamente no disco (o que inclui arquivos para tabelas e índices temporários).A solução de Herman funciona, mas pode ser simplificada porque o Sqlite permite armazenar qualquer tipo de valor em qualquer campo.
Esta é uma versão mais simples que usa um
Value
campo declaradoTEXT
para armazenar qualquer valor:fonte
Para uma variável somente leitura (ou seja, um valor constante definido uma vez e usado em qualquer lugar na consulta), use uma Expressão de tabela comum (CTE).
Cláusula SQLite WITH
fonte
A solução de Herman funcionou para mim, mas
...
me confundiu um pouco. Estou incluindo a demonstração que desenvolvi com base na resposta dele. Os recursos adicionais em minha resposta incluem suporte para chave estrangeira, chaves de incremento automático e uso dalast_insert_rowid()
função para obter a última chave gerada automaticamente em uma transação.Minha necessidade dessa informação surgiu quando achei uma transação que exigia três chaves estrangeiras, mas só consegui obter a última com
last_insert_rowid()
.fonte
Tente usar valores vinculativos. Você não pode usar variáveis como no T-SQL, mas pode usar "parâmetros". Espero que o link a seguir seja útil. Valores Vinculativos
fonte