0

CALL 内で提供されるブール値に基づいて特定のテーブルに参加する必要があるストアド プロシージャを変更する必要があります。

これは MySQL で可能ですか。以下の一般的な構文は機能しません。

select...
from table_one t1
case 1=1 join table_two on t1.id = t2.id end;
4

2 に答える 2

0

次のようなことができないでしょうか。

-- dummy procedure
CREATE PROCEDURE get_result(IN id int(11))
  SELECT t1.* FROM table_one t1 
  INNER JOIN table_two t2 ON IF(id = 1, 1, 0) && t2.id = t1.id

プロシージャに送信されたパラメーターに応じて異なるクエリを実行するには、次のこともできます。

-- dummy procedure
CREATE PROCEDURE get_result(IN id int(11))
  BEGIN
    CASE id 
    -- if supplied argument is equal to '1' select all fields from table_one
    WHEN 1 THEN SELECT * FROM table_one;
    -- else select all fields from table_one & table_two
    ELSE SELECT t1.*, t2.* FROM table_one t1 INNER JOIN table_two t2 ON t2.id = t1.id
    END CASE;
  END;
于 2013-11-14T20:33:25.187 に答える