mysql在带参数的存储过程中使用prepare语句时出现语法错误

mysql在带参数的存储过程中使用prepare语句时出现语法错误,mysql,Mysql,我有一个名为salesperson的表,其中包括id、姓名、职务等字段。我想使用存储过程和prepare语句选择职务匹配的所有记录。 下面是我的代码 delimiter $ create procedure pro9(a varchar(25)) declare job varchar(25); set job = a; begin prepare st0 from 'select * from salesperson where jobtitle = job;'; execute st0; d

我有一个名为salesperson的表,其中包括id、姓名、职务等字段。我想使用存储过程和prepare语句选择职务匹配的所有记录。 下面是我的代码

delimiter $
create procedure pro9(a varchar(25))
declare job varchar(25);
set job = a;
begin
prepare st0 from 'select * from salesperson where jobtitle = job;';
execute st0;
deallocate prepare st0;
end$
delimiter ;
call pro9("salesman");

您可以使用以下存储过程:

DROP PROCEDURE IF EXISTS `salesdata`;
DELIMITER //

CREATE PROCEDURE SALESDATA (JOB_TITLE varchar(30))
BEGIN

    SELECT s.* 
      FROM salesperson s
     WHERE s.jobtitle = JOB_TITLE;

END //

DELIMITER ;

call SALESDATA("salesman");

诚实地避免存储过程。它们很难调试,来自应用程序代码的直接查询也同样有效。您可以查看中的示例。提示:你不需要事先准备好的陈述。