0

我必须尝试在 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;

那么各位,我该怎么办呢?

谢谢。

4

4 回答 4

2

您可以将其与动态查询一起使用,如下所示

@qry varchar(max)
set @qry ='DECLARE curs1 CURSOR FOR SELECT tempDate FROM tbl_temp LIMIT'+ @start+','+ @finish

exec(@qry)
于 2013-11-12T06:41:37.007 回答
2

在 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 语法

于 2013-11-12T06:54:10.503 回答
0

尝试这个 :

SET start=0;
SET finish=150;

DECLARE curs1 CURSOR FOR SELECT tempDate FROM tbl_temp LIMIT start,finish;
于 2013-11-12T06:45:18.703 回答
0

目前,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)
于 2013-11-12T06:56:20.227 回答