Eu gostaria de SELECIONAR um único valor em uma variável. Eu tentei seguir:
DECLARE myvar INT(4);
- retorna imediatamente algum erro de sintaxe.
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
- retorna um único inteiro
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
- não funciona, também tentei @myvar
É possível usar DECLARE fora de stored procedures ou funções?
Talvez eu simplesmente não entenda o conceito de variáveis de usuário ... Eu apenas tentei:
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
... que funcionou exatamente como deveria. Mas se eu executar cada consulta por vez, obtenho apenas @var NULL.
fonte
No final, um procedimento armazenado foi a solução para meu problema. Aqui está o que ajudou:
fonte
Essas respostas não cobrem muito bem as variáveis MÚLTIPLAS.
Fazer a atribuição inline em um procedimento armazenado faz com que esses resultados TAMBÉM sejam enviados de volta no conjunto de resultados. Isso pode ser confuso. Para usar a sintaxe SELECT ... INTO com várias variáveis, você faz:
O SELECT deve retornar apenas 1 linha, portanto LIMIT 1, embora isso nem sempre seja necessário.
fonte
Você também pode usar SET em vez de DECLARE
fonte
De acordo com a documentação do MySQL, DECLARE funciona apenas no início de um bloco BEGIN ... END como em um programa armazenado.
fonte
syntax error, missing ;
erro para mim.Você não precisa DECLARAR uma variável no MySQL. O tipo de uma variável é determinado automaticamente quando um valor é atribuído a ela pela primeira vez. Seu tipo pode ser: inteiro, decimal, ponto flutuante, string binária ou não-binária ou valor NULL. Consulte a documentação das variáveis definidas pelo usuário para obter mais informações:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
Você pode usar SELECT ... INTO para atribuir colunas a uma variável:
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
Exemplo:
fonte
É importante notar que apesar do fato de você poder
SELECT INTO
variáveis globais como:SELECT ... INTO @XYZ ...
Você NÃO pode usar
FETCH INTO
variáveis globais como:FETCH ... INTO @XYZ
Parece que não é um bug . Espero que seja útil para alguém ...
fonte
Estou usando a versão 6 (MySQL Workbench Community (GPL) para Windows versão 6.0.9 revisão 11421 build 1170) no Windows Vista. Não tenho problemas com as seguintes opções. Provavelmente eles consertaram, já que esses caras tiveram os problemas três anos atrás.
Todas as opções acima me dão um resultado correto.
fonte
Para aqueles que estão executando esses problemas agora, apenas tente colocar um apelido para a tabela, este deve ser o truque, por exemplo:
Funcionou para mim
Felicidades.
fonte
Você pode perder o símbolo @ antes do seu valor, assim
select 'test' INTO @myValue
;fonte
SELECT c1, c2, c3, ... INTO @ v1, @ v2, @ v3, ... FROM nome_tabela WHERE condição;
fonte