


Как в MySql в хранимой функции\процедуре вернуть таблицу (результат выборки из других таблиц)?
Пожалуйста приведите простой пример, гуглил и смотрел в доках, но что-то не получается, туплю.. .
Суть в том, что в java мне нужно вызвать эту функцию и получить эту таблицу.
В базе данных такой таблицы нет и не должно быть.
Я думал, может быть создать view и возвращать его?
Пожалуйста посоветуйте и дайте простой пример.
Очень важно, что сама таблица - результат выборки из нескольких. Такой таблицы нет.
Спасибо, разобрался. Из-за собственного идиотизма забыл, что любой select в MySql возвращает таблицу. В процедуре не нужно никакго return, а просто вызываем функцию из джава и получаем результат.
Если у кого-то возникнет такая же проблема, то вот мой пример:
DROP procedure IF EXISTS get_allTotalsAndNames;
DELIMITER $$
CREATE procedure get_allTotalsAndNames()
BEGIN
select*
from pizdata p
inner join contact c
using(tel)
order by p.pid;
END;
$$
DELIMITER ;
Ожидаемый результат - таблица:
tel Varchar(45), pid INT(11), data Varchar(45), img Varchar(45), site Varchar(45), email Varchar(45), name Varchar(45)
Вызов процедуры из джава:
String query = "{call get_allTotalsAndNames}";
int id = 0;
openConnection();// уже создано соединение с бд, при помощи Connection connection
CallableStatement cs;
try {
cs = connection.prepareCall(query);
ResultSet rs = cs.executeQuery();
Branch branch = new Branch();
Totals tot = new Totals(branch);
while (rs.next())
{
System.out.println(rs.getString("tel"));
System.out.println(rs.getString("data"));
System.out.println(rs.getString("img"));
System.out.println(rs.getString("site"));
System.out.println(rs.getString("email"));
System.out.println(rs.getString("name"));
System.out.println(rs.getInt("pid"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Код процедуры в студию! Поможем)
Сам не знаю английский, но если ты знаешь, то надеюсь, это, то что тебе нужно:
http:// dev.mysql.com/doc/refman/5.5/en/create-procedure.html
Используй JOIN