0

以下の手順では、2 つのパラメーターがあります。実行時に両方のパラメーターを入力する必要があります。最初のデータを入力する場合、これらのパラメーターをオプションにしたい 2 番目のデータを入力し、null のままにする場合、最初の 1 つのデータを 1 つのパラメーターに基づいてフィルター処理する必要があります。パラメータを渡さなかった場合、両方のパラメータはフィルタリングされるべきではありません。

DROP PROCEDURE IF EXISTS medatabase.SP_rptProvince2;
CREATE PROCEDURE medatabase.`SP_rptProvince2`(
IN e_Region VARCHAR(500),
IN e_Province VARCHAR(500)
)
BEGIN

  DECLARE strQuery VARCHAR(1024);
  DECLARE stmtp   VARCHAR(1024);


    SET @strQuery = CONCAT('SELECT * FROM alldata where 1=1 ');
   -- IF e_region IS NOT NULL THEN


    -- SET @strQuery = CONCAT(@strQuery, 'AND regionName'=e_Region);
   -- END IF;

    IF e_Region IS NOT NULL THEN
        SET @strQuery = CONCAT(@strQuery, ' AND regionName = "',e_Region,'"');


    IF e_Province IS NOT NULL THEN
        SET @strQuery = CONCAT(@strQuery, ' AND provinceName = "',e_Province,'"');

   END IF;
   END IF;

  PREPARE  stmtp FROM  @strQuery;
  EXECUTE  stmtp;
 End;
4

1 に答える 1

2

MySQLプロシージャは、オプションのパラメータをサポートしていません。現在行っていること(パスインとテストNULL)を行う必要があります。

于 2012-05-01T08:43:17.793 に答える