我必须尝试在 MySQL 查询过程中使用变量值。
但它不起作用。这是我的程序:
SET @start=0;
SET @finish=150;
...
DECLARE curs1 CURSOR FOR SELECT tempDate FROM tbl_temp LIMIT @start,@finish;
...
我只想创建如下查询
SELECT tempDate FROM tbl_temp LIMIT 0,150;
那么各位,我该怎么办呢?
谢谢。
您可以将其与动态查询一起使用,如下所示
@qry varchar(max)
set @qry ='DECLARE curs1 CURSOR FOR SELECT tempDate FROM tbl_temp LIMIT'+ @start+','+ @finish
exec(@qry)
在 LIMIT 子句中使用变量或过程参数在MySQL 5.5中可用。
否则,您需要使用准备好的语句。从文档 -在存储的程序中,LIMIT 参数可以使用整数值例程参数或 MySQL 5.5.6 的局部变量来指定。例子:
SET @skip=1; SET @numrows=5;
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
EXECUTE STMT USING @skip, @numrows;
更多信息 - SELECT 语法。
尝试这个 :
SET start=0;
SET finish=150;
DECLARE curs1 CURSOR FOR SELECT tempDate FROM tbl_temp LIMIT start,finish;
目前,MySQL 不支持 LIMIT 子句中的变量,如http://bugs.mysql.com/bug.php?id=8094所述
但是,您可以使用准备好的语句来解决您的问题,如下所示:
SET @start=0;
SET @finish=150;
SET @query = "SELECT tempDate FROM tbl_temp LIMIT " + @start + ", " + @finish
EXEC(@query)