0

このプロシージャ「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」ビットに何かをする予定でした..

しかし.. [Err] 1305 - FUNCTION backup.get_usage does not existを取得し続けます

オンラインで見ると、関数/プロシージャ名と括弧の間のスペースについて多くの話がありますが、それらはありません..または、このプロシージャにはありませんが、欠陥のあるプロシージャです(つまり、期待される結果が得られます)..私は'私が何かを逃したことを願っていますが、ほとんど立ち往生しています..

すべてのヘルプは大歓迎です..

4

1 に答える 1

0

ビューでストアド ルーチンの結果を使用する場合は、追加のテーブルを作成して入力する必要があります。手順でテーブルを作成して入力します。その後、このプロシージャを呼び出すと、テーブルが作成され、ビューからデータが選択されます。

アプリケーションで結果セットを読み取るだけの場合は、プロシージャで SELECT クエリを実行し (現在、プロシージャで実行されています)、コードでデータセットを読み取ることができます (c#、mysqli 拡張機能を備えた php など)。

于 2013-02-07T15:31:44.517 に答える