nrg317 发表于 2008-12-3 15:34:54

请帮忙看看关于存储过程的问题

我写这个存储过程如下:
DELIMITER $$
DROP PROCEDURE IF EXISTS `qzcz`.`pro_check` $$
CREATE PROCEDURE `qzcz`.`pro_check` (in select_a varchar(20),in from_a varchar(20),in to_a varchar(20),in aa int,in bb int)
BEGIN
select * from business where depart='select_a' and (date1 between 'from' and 'to') order by id asc limit aa,bb;
END $$
DELIMITER ;

运行好系统提示错误如下:
Script line: 4 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'aa,bb;



系统提示输入变量语法错误,但是我不知道错在那里?
CREATE PROCEDURE `qzcz`.`pro_check` (in select_a varchar(20),in from_a varchar(20),in to_a varchar(20),in aa int,in bb int)
END' at line 3

nrg317 发表于 2008-12-3 15:36:54

补充说明: 原代码是这样的
DELIMITER $$

DROP PROCEDURE IF EXISTS `qzcz`.`pro_check` $$
CREATE PROCEDURE `qzcz`.`pro_check` (in select_a varchar(20),in from_a varchar(20),in to_a varchar(20),in aa int,in bb int)
BEGIN
select * from business where depart=select_a and (date1 between from_a and to_a) order by id asc limit aa,bb;
END $$

DELIMITER ;

gkl0818 发表于 2008-12-3 16:03:39

問問題的時候把MYSQL相關的版本信息也發過來

gkl0818 发表于 2008-12-3 16:07:00

還有表的相關結構發上來

gkl0818 发表于 2008-12-3 16:47:43

恢復

mysql中如果limit后要接變量應該拼sqltext 如下

create procedure test (in a int)
begin
set @sqltext:=concat('select * from testP order by id asc limit0,',a);
prepare stmt from @sqltext;
execut stmt;
deallocate prepare stmt;
end;


大概的就是這樣,你在自己機子上測試下
麻煩下次提問的時候把數據庫版本號和相關的表結構創建的腳本一起附上
页: [1]
查看完整版本: 请帮忙看看关于存储过程的问题