MySQL:在视图中使用过程会产生已知错误,但没有任何已知的症状

时间:2013-02-07 11:51:54

标签: mysql stored-procedures view

我将此过程'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;

之后我计划对'usage_table'位做一些事情。

但是......我一直在接受 [错误] 1305 - 功能backup.get_usage不存在

在线查看有很多关于函数/过程名称和括号之间的空格的讨论,但没有。或者过程有缺陷,这个过程不是(即:我得到了预期的结果)。我希望我错过了一些其他东西,但几乎卡住了......

非常感谢任何和所有帮助..

1 个答案:

答案 0 :(得分:0)

如果要在视图中使用存储例程的结果,则需要创建并填充其他表。在过程中创建并填充表。之后,调用此过程,它将创建表,然后从您的视图中选择数据。

如果你只想在appication中读取结果集,那么你可以在程序中执行SELECT查询(你的程序当前执行),并在代码中读取数据集(c#,带有mysqli扩展名的php,或者等等) ..)