MySQL: использование процедуры в представлении дает известную ошибку, но не имеет ни одного из известных симптомов

Я получил эту процедуру'get_usage ', определенную как таковой:

BEGIN
    SELECT 
        CONCAT(GROUP_CONCAT(CONCAT('(SELECT order_id,`usage`, created, expire FROM ',table_name,' )') SEPARATOR '\r\nUNION\r\n'),' ORDER BY created ASC')
    INTO 
        @resultQuery
    FROM 
        information_schema.`TABLES`
    WHERE
        table_name LIKE "usage_%";

    PREPARE stmt FROM @resultQuery;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END

Что делает то, что он должен делать.

Для большей гибкости я хочу сделать вывод этой процедуры в виде:

CREATE 
    VIEW `usage_view`AS 
    SELECT get_usage() as usage_table;

после чего я планировал сделать что-то с битом use_table.

BUT.. I keep getting [Err] 1305 - FUNCTION backup.get_usage does not exist

В онлайн-разговорах много разговоров о пробелах между именами функций/процедур и скобками, которых нет. Или процедуры, которые являются ошибочными, что эта процедура не является (то есть: я получаю ожидаемые результаты). Я ' м надеясь, что я пропустил что-то, но довольно сильно застрял.

Любую помощь приветствуем.

0
nl ja de
Это функция? Функция должна возвращать значение.
добавлено автор Devart, источник
Тогда вы не можете использовать процедуры в запросах SELECT.
добавлено автор Devart, источник
aaah, crap, я имел в виду процедуру, исправленную
добавлено автор Multifarious, источник
учитывая результаты, которые я возвращаю при поиске указанной ошибки, я думаю, что это должно быть возможно. Но я также заметил, что количество неудач равно сложности процедуры .. Или так кажется ..
добавлено автор Multifarious, источник

1 ответы

Если вы хотите использовать результат хранимой процедуры в представлении, вам необходимо создать и заполнить дополнительную таблицу. Создайте и заполните таблицу в процедуре. После этого вызовите эту процедуру, она создаст таблицу, затем выберите данные из вашего представления.

Если вы просто хотите прочитать набор результатов в приложении, тогда вы можете выполнить запрос SELECT в процедуре (ваша процедура делает это в настоящее время) и прочитать набор данных в коде (c #, PHP с расширением mysqli или т. Д.).

0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw