字段列表 mysql 中的未知列“ ”并在调用 mysql 函数时传递动态 table 名称

Unknown column ' ' in the field list mysql and passing dynamic table name while calling mysql function

我正在尝试使用 mysql workbench 创建一个 mysql 存储过程函数,它将显示两个 table 的连接数据的结果基于一些状况。我也想将 table 名称作为参数传递。

我的代码在这里:

CREATE PROCEDURE `Get_Texts`(IN wrd longtext, IN dbname longtext,
 IN splitdbname longtext,
 IN lang longtext)


BEGIN
          
        
SET @sql_ = CONCAT('SELECT * FROM ',dbname,' as ifxcd

INNER JOIN 
',splitdbname,' as ifxsd
ON 
ifxsd.Crawl_id = ifxcd.Id where ifxsd.Language = ',lang,'

AND ifxsd.Word Like ',wrd,'%

order by ifxsd.Percentage desc 
limit 100');
          

PREPARE statement_ FROM @sql_;
          
EXECUTE statement_ ;

END

调用函数:

call Get_Texts('acc', emp_info, split_emp_txt , 'English(en)');

调用函数后出现错误

'Unknown column 'emp_info' in the field list

我怎样才能克服这个问题并看到所需的输出?提前致谢。

在调用前设置一个 udv 并在 emp_iinfo 前添加一个 at 符号。 split_emp_text 相同 例如

set @emp_info = 'aaa';
set @split_emp_text = 'bbb'
call Get_Texts('acc', @emp_info, @split_emp_txt , 'English(en)');

问题出在我最终发现的查询语法中。这是正确的代码:

CREATE PROCEDURE `Get_Texts`(IN wrd longtext, IN dbname longtext, 
IN splitdbname longtext, IN lang longtext)



BEGIN

SET @sql_ = CONCAT("SELECT * FROM `",dbname ,"` as ifxcd
INNER JOIN `",splitdbname,"` as ifxsd ON ifxcd.id = ifxsd.Crawl_id 
where ifxsd.Language = '",lang,"' and ifxsd.Word Like '",wrd,"%'
ORDER BY ifxsd.percentage DESC
limit 100");
PREPARE statement_ FROM @sql_;
EXECUTE statement_ ;
DEALLOCATE PREPARE statement_;
END

调用过程:

call Get_Texts('acc', 'emp_info', 'split_emp_txt' , 'English');