variable two stored query outfile into mysql select mysql-workbench declare

two - SELECT INTO Variable en MySQL DECLARE causa un error de sintaxis?



set variable mysql (10)

Al final, un procedimiento almacenado fue la solución para mi problema. Esto es lo que ayudó:

DELIMITER // CREATE PROCEDURE test () BEGIN DECLARE myvar DOUBLE; SELECT somevalue INTO myvar FROM mytable WHERE uid=1; SELECT myvar; END // DELIMITER ; call test ();

Me gustaría SELECCIONAR un solo valor en una variable. Intenté seguir:

DECLARE myvar INT(4);

- devuelve inmediatamente algún error de sintaxis.

SELECT myvalue FROM mytable WHERE anothervalue = 1;

- devuelve un solo entero

SELECT myvalue INTO myvar FROM mytable WHERE anothervalue = 1;

- no funciona, también probé @myvar

¿Es posible usar DECLARE fuera de procedimientos o funciones almacenados?

Tal vez no entiendo el concepto de variables de usuario ... Acabo de probar:

SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1; SELECT @var;

... que funcionó exactamente como se suponía. Pero si ejecuto cada consulta a la vez, obtengo @var NULL.


Es posible que te pierdas el símbolo @ antes de tu valor, así que select ''test'' INTO @myValue ;


Estas respuestas no cubren muy bien variables MÚLTIPLES.

Hacer la asignación en línea en un procedimiento almacenado hace que esos resultados TAMBIÉN se envíen nuevamente en el conjunto de resultados. Eso puede ser confuso. Para usar la sintaxis SELECT ... INTO con múltiples variables:

SELECT a, b INTO @a, @b FROM mytable LIMIT 1;

El SELECT debe devolver solo 1 fila, por lo tanto LIMIT 1, aunque eso no siempre es necesario.


Estoy usando la versión 6 (MySQL Workbench Community (GPL) para Windows versión 6.0.9 revisión 11421 compilación 1170) en Windows Vista. No tengo problemas con las siguientes opciones. Probablemente lo solucionaron ya que estos tipos tuvieron los problemas hace tres años.

/* first option */ SELECT ID INTO @myvar FROM party WHERE Type = ''individual''; -- get the result select @myvar; /* second option */ SELECT @myvar:=ID FROM party WHERE Type = ''individual''; /* third option. The same as SQL Server does */ SELECT @myvar = ID FROM party WHERE Type = ''individual'';

Todas las opciones anteriores me dan un resultado correcto.


Me encontré con este mismo problema, pero creo que sé lo que está causando la confusión. Si usa MySql Query Analyzer, puede hacerlo bien:

SELECT myvalue INTO @myvar FROM mytable WHERE anothervalue = 1;

Sin embargo, si coloca esa misma consulta en MySql Workbench, lanzará un error de sintaxis. No sé por qué serían diferentes, pero lo son. Para evitar el problema en MySql Workbench, puede volver a escribir la consulta de esta manera:

SELECT @myvar:=myvalue FROM mytable WHERE anothervalue = 1;


No necesita DECLARAR una variable en MySQL. El tipo de una variable se determina automáticamente cuando se le asigna un valor por primera vez. Su tipo puede ser uno de: enteros, decimales, de coma flotante, cadenas binarias o no binarias, o valores NULL. Consulte la documentación de Variables definidas por el usuario para obtener más información:

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

Puede usar SELECT ... INTO para asignar columnas a una variable:

http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html

Ejemplo:

mysql> SELECT 1 INTO @var; Query OK, 1 row affected (0.00 sec) mysql> SELECT @var; +------+ | @var | +------+ | 1 | +------+ 1 row in set (0.00 sec)


Para aquellos que se ejecutan en estos temas en este momento, solo intentan poner un alias para la tabla, este debería ser el truco, por ejemplo:

SELECT myvalue INTO myvar FROM mytable x WHERE x.anothervalue = 1;

Funcionó para mí

Aclamaciones.


Según los documentos de MySQL, DECLARE funciona solo al comienzo de un bloque BEGIN ... END como en un programa almacenado.


También puede usar SET en lugar de DECLARAR

SET @myvar := (SELECT somevalue INTO myvar FROM mytable WHERE uid=1); SELECT myvar;


Vale la pena señalar que a pesar del hecho de que puede SELECT INTO variables globales como:

SELECT ... INTO @XYZ ...

NO puede usar FETCH INTO variables globales como:

FETCH ... INTO @XYZ

Parece que no es un bug . Espero que sea útil para alguien ...