Как использовать хранимую процедуру / функции для возврата в качестве представления в MySQL? - PullRequest
0 голосов
/ 25 марта 2019

Можно ли создать представление, которое вызывает хранимую процедуру в MySQL?

У меня есть около 20 различных баз данных, которые мне понадобятся, чтобы объединить их все, и мне нужно будет составить отчет на основе этого.

Запросы в точности аналогичны всем базам данных.

Я мог бы достичь этого, очевидно, создав представление, которое пересекает все базы данных, такие как:

SELECT "1234" as project_id, name as company_name 
FROM [db.a].companies

UNION ALL

SELECT "4321" as project_id, name as company_name 
FROM [db.b].companies

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

BEGIN
    SET @query = CONCAT('
                        SELECT ',project_id,' as project_id,
                                name as company_name
                        FROM ',db,'.companies
                        ');
    SELECT @query;
    PREPARE stmt from @query;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END

Тогда, очевидно, я могу назвать его

CALL `list_companies`('db_abcd','1234')

Теперь я не могу сохранить этот "вызов" в качестве представления.Принимая во внимание, что мне действительно нужно иметь представление, чтобы PowerBI мог их использовать.

Как это сделать?Есть ли альтернативы?

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