MySQL: выбор нескольких полей для нескольких переменных в хранимой процедуре - PullRequest
91 голосов
/ 16 марта 2010

Могу ли я ВЫБРАТЬ несколько столбцов в несколько переменных в одном запросе выбора в MySQL?

Например:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

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

Какой правильный синтаксис для этого?

Ответы [ 3 ]

195 голосов
/ 16 марта 2010

Ваш синтаксис не совсем верен: вам нужно перечислить поля по порядку перед INTO и соответствующие целевые переменные после:

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
9 голосов
/ 27 февраля 2015

========== ========== Консультировать

@ martin clayton Ответ правильный, но это только совет.

Пожалуйста, избегайте использования неоднозначной переменной в хранимой процедуре.

Пример:

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

Приведенный выше пример вызовет ошибку (ошибка нулевого значения)

Пример, приведенный ниже, является правильным. Я надеюсь, что это имеет смысл.

Пример:

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

Вы также можете сделать их однозначными, ссылаясь на таблицу, например:

[Кредит: Маганап ]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName
2 голосов
/ 22 января 2015

В качестве альтернативы ответу Мартина, вы также можете добавить часть INTO в конце запроса, чтобы сделать запрос более читабельным:

SELECT Id, dateCreated FROM products INTO iId, dCreate
...