Вернуть массив в хранимую функцию - PullRequest
2 голосов
/ 18 августа 2011

Я пытаюсь использовать результат сохраненной функции в операторе WHERE в MySQL (5.x), но это не удается, потому что в функции я выбираю значения из таблицы в переменную INT, а затем возвращаю их / это, который, очевидно, не работает, если SELECT возвращает более 1 строки.Я попытался вернуть TABLE (как я понял, TABLE означает массив в MySQL), но это тоже не сработало.

Есть ли способ, которым я мог бы сделать что-то вроде:

SELECT ID FROM myTable WHERE ID IN my_function(params);

Спасибо.

1 Ответ

1 голос
/ 18 августа 2011

Этого нельзя сделать ...

Во-первых, вы не можете использовать сохраненную функцию для возврата нескольких результатов - вам нужно будет использовать хранимую процедуру.

Состояние MySQL :

Операторы, которые возвращают набор результатов, могут использоваться внутри хранимой процедуры, но не внутри хранимой функции.

Во-вторых, вы не можете использовать хранимую процедуру в запросе - см. Этот ТА вопрос .

Рассматривали ли вы использование "HAVING ..." в конце вашего запроса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...