我想在限制中使用pollNo,但是会收到错误消息:


  错误:脚本行:4您有一个
  您的SQL语法错误;检查
  对应于您的MySQL的手册
  正确语法的服务器版本
  在'pollNo,1附近使用'作为A连接
  A.id = poll_data.poll_id上的poll_data;
  
  在第6行结束


DELIMITER $$

DROP PROCEDURE IF EXISTS `prj`.`ret_poll` $$
CREATE PROCEDURE `prj`.`ret_poll` (IN pollNo int)
BEGIN
select * from
(select * from poll limit pollNo,1 )as A
JOIN poll_data
on A.id=poll_data.poll_id;

END $$

DELIMITER ;

最佳答案

您正在使用哪个版本的MySQL?我认为这在5.5及更高版本中已解决,但以前的版本需要变通办法,因为它们需要整数常量或准备好的语句。

因此,在5.5之前,您应该可以执行以下操作:

DELIMITER $$

DROP PROCEDURE IF EXISTS `prj`.`ret_poll` $$
CREATE PROCEDURE `prj`.`ret_poll` (IN pollNo int)
BEGIN
PREPARE STMT FROM "select * from (select * from poll limit ?,1 ) as A join poll_data on A.id=poll_data.poll_id";
SET @start = pollNo;

EXECUTE STMT USING @start;

END $$

DELIMITER ;


您可以在此处了解更多信息:http://bugs.mysql.com/bug.php?id=11918

关于mysql - 如何在过程输入中使用限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6640499/

10-11 07:04