良い午後を含め2つのselect文、MYSQL:エラーは、私はMySQLでのコマンド「FOR SHOWの助成金」の動作をエミュレートするために保存された機能を作成したストアドファンクション
に入社。スクリプトの定義は次のとおりです。
CREATE FUNCTION get_grants(p_user text, p_host text, p_type text, p_obj text)
RETURNS text
NOT DETERMINISTIC
READS SQL DATA
BEGIN
...
END;
この関数をselect文で使用すると、正しく実行されます。例えば:しかし
SELECT User as USER, Host as HOST,
'GLOBAL' as PRIV_TYPE, NULL as DATABASE_NAME,
mydatabase.get_grants(User, Host, 'GLOBAL', '') as PRIVILEGES
FROM mysql.user
、私はこのような異なるパラメータ値を持つ関数を呼び出す2つのSELECT文を、参加することALL声明UNIONまたはUNIONを使用します。
SELECT User as USER, Host as HOST,
'GLOBAL' as PRIV_TYPE, NULL as DATABASE_NAME,
mydatabase.get_grants(User, Host, 'GLOBAL', '') as PRIVILEGES
FROM mysql.user
UNION ALL
SELECT User as USER, Host as HOST,
'DB' as PRIV_TYPE, Db as DATABASE_NAME,
mydatabase.get_grants(User, Host, 'DB', Db) as PRIVILEGES
FROM mysql.db
ORDER BY USER, HOST, DATABASE_NAME IS NULL, DATABASE_NAME;
I次のエラーが発生します。#1222 - 使用されたSELECTステートメントの列数が異なります。
誰でもここで何が起こっているのか、この問題を解決する方法を説明できますか?
ありがとうございます。