MySQL: выбор нескольких полей в несколько переменных в хранимой процедуре


могу ли я выбрать несколько столбцов в несколько переменных в одном запросе select в MySQL?

например:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

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

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

3 82

3 ответа:

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

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

==========советую==========

@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

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

[ кредит : maganap]

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

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

SELECT Id, dateCreated FROM products INTO iId, dCreate