0

わかりましたので、ここで私が試してみます。このコードを問題なく実行できます。

    CREATE DEFINER=`dbname`@`%.domain.com` PROCEDURE `test4`(_sort character(2), 
_start int, _page int, _seek varchar(64))

begin
    select * from TABLE_OF_NAMES where

        first_name like coalesce(concat('%', _seek, '%'), first_name) or
        last_name like coalesce(concat('%', _seek, '%'), last_name)   
        and email in (select * from TempTable_emails)

   order by

        case when _sort = 'fa' then first_name end asc,
        case when _sort = 'fd' then first_name end desc,
    limit _start, _page;
end

ここで、TempTable_emails テーブルの名前をプロシージャのパラメータにする必要があります。私は次のことを試します:

    CREATE DEFINER=`dbname`@`%.domain.com` PROCEDURE `test4`(_sort character(2),
 _start int, _page int, _seek varchar(64),  _tablename varchar(64))
    begin

  set @a = concat(' select * from TABLE_OF_NAMES where
    first_name like coalesce(%', _seek, '%), first_name) or
    last_name like coalesce(%', _seek, '%), last_name)  and
    email in (select * from ',_tablename,')
    order by
    case when \'',_sort,'\' = \'fa\' then first_name end asc,
    case when \'',_sort,'\' = \'fd\' then first_name end desc,
    limit _start, _page;');

prepare stmt1 FROM @a;
execute stmt1;
deallocate prepare stmt1;
end

ただし、これはエラーのみを生成します。 , last_name) と ' 行 2"

おそらくエラーが何であるかを確認する必要があるように感じますが、それを機能させることができません...誰かが私のエラーが何であるかをすぐに確認できますか?

私が達成したいことに対する別の(おそらくより簡単な)回避策はありますか?

ありがとう!

4

1 に答える 1