如何在MySQL中使用存储过程/函数作为视图返回?

时间:2019-03-25 02:34:47

标签: mysql stored-procedures

是否可以创建一个视图来在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可以使用它们。

如何执行此操作?有其他选择吗?

0 个答案:

没有答案