Среда: MySQL 5.1, Linux
У меня есть хранимая процедура, которая вычисляет несколько значений из одного входного значения. Значения возвращаются как параметры OUT. Я хотел бы вызвать эту процедуру для каждого набора строк и чтобы значения отображались в виде столбцов в наборе результатов. Значения имеют сложную взаимосвязь, так что отдельные функции для каждого значения нелегко построить.
Вопрос: Как я могу получить параметры OUT для отображения в виде столбцов в таблице?
Вот что у меня есть:
DELIMITER $_$
DROP PROCEDURE IF EXISTS in_out;
CREATE PROCEDURE in_out (
IN s TEXT,
OUT op TEXT,
OUT opn INT,
OUT opd TEXT,
OUT len INT
)
BEGIN
SET op = 'del';
SET opn = 1;
SET opd = substr(s,4);
SET len = LENGTH(SUBSTR(s,4));
END
$_$
DELIMITER ;
Тогда:
mysql> call in_out('delACT',@op,@opn,@opd,@len);
Query OK, 0 rows affected (0.00 sec)
mysql> select @op,@opn,@opd,@len;
+------+------+------+------+
| @op | @opn | @opd | @len |
+------+------+------+------+
| snv | 1 | ACT | 3 |
+------+------+------+------+
1 row in set (0.00 sec)
Пока все хорошо, но я не могу понять, как вызвать эту процедуру для каждой строки и вернуть результаты в наборе результатов. Я хочу что-то вроде этого:
dream> select mycol,in_out(mycol) from mytable
+---------+------+------+------+------+
| mycol | @op | @opn | @opd | @len |
+---------+------+------+------+------+
| delACT | del | 1 | ACT | 3 |
+---------+------+------+------+------+
Спасибо!