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?
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
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
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
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