MySQL: Selección de múltiples campos en múltiples variables en un procedimiento almacenado


¿Puedo SELECCIONAR múltiples columnas en múltiples variables dentro de la misma consulta select en MySQL?

Por ejemplo:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;

¿Cuál es la sintaxis correcta para esto?

Author: martin clayton, 2010-03-16

3 answers

Su sintaxis no es del todo correcta: necesita listar los campos en orden antes del INTO, y las variables de destino correspondientes después de:

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
 178
Author: martin clayton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-08 17:50:58

==========Asesorar==========

@martin clayton La respuesta es correcta, pero esto es solo un consejo.

Evite el uso de variables ambiguas en el procedimiento almacenado.

Ejemplo:

SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName

El ejemplo anterior causará un error (error de valor nulo)

El siguiente ejemplo es correcto. Espero que esto tenga sentido.

Ejemplo:

SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName

También puede hacerlos inequívocos haciendo referencia a la tabla, como:

[Crédito: maganap ]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName
 8
Author: sijo vijayan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:48

Alternativamente a la respuesta de Martin, también puede agregar la parte EN al final de la consulta para que la consulta sea más legible:

SELECT Id, dateCreated FROM products INTO iId, dCreate
 1
Author: ibai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-22 15:56:08