2

私は次のようなストアドプロシージャを書きました:

  DELIMITER $$
   CREATE PROCEDURE searchByTerm(term VARCHAR(300))
    BEGIN
    SET @statment = "Select name,description from products where name like '%?%' OR description like '%?%'";
    PREPARE stmt FROM @statment;
    SET @a = term;
    SET @b = term;
    EXECUTE stmt USING @a,@b;
    DEALLOCATE PREPARE stmt; 
  END$$

それを次のように呼び出します:

CALL searchByTerm('xyz');

次のエラーが発生します。

Error Code : 1210
Incorrect arguments to EXECUTE

私は何か間違ったことをしていますか?concat ステートメントで実行できることはわかっていますが、なぜこのように機能しないのですか? 同じパラメーターを複数回使用することはできませんか? 助けてくれてありがとう..

4

1 に答える 1

1

CONCATクエリで使用する

SET @statment = "Select name,description 
                 from products 
                 where name like CONCAT('%', ? ,'%') OR 
                       description like CONCAT('%', ? ,'%')";

完全なクエリは次のようになります。

DELIMITER $$
CREATE PROCEDURE searchByTerm(term VARCHAR(300))
  BEGIN
    SET @statment = "Select name,description 
                     from products 
                     where name like CONCAT('%', ? ,'%') OR 
                           description like CONCAT('%', ? ,'%')";
    PREPARE stmt FROM @statment;
    SET @a = term;
    SET @b = term;
    EXECUTE stmt USING @a,@b;
    DEALLOCATE PREPARE stmt; 
  END$$
于 2012-11-07T05:39:31.067 に答える