3

我有一个包含 SELECT 语句的过程 SelectProc。我想添加一个过程参数 LimitRowsCount 并按如下方式使用它:

CREATE PROCEDURE SelectProc (IN LimitRowsCount INTEGER UNSIGNED) 
BEGIN
   SELECT (...)
   LIMIT LimitRowsCount;
END

但这种方法行不通。

SELECT 本身包含嵌套的子查询,因此我无法从中创建视图。有没有比动态 SQL(准备语句)更合适的方法?

4

2 回答 2

3
CREATE PROCEDURE SelectProc (IN LimitRowsCount INT) 
BEGIN

SET @LimitRowsCount1=LimitRowsCount; 

PREPARE STMT FROM "SELECT (...) LIMIT ?";

EXECUTE STMT USING @LimitRowsCount1; 

END
于 2010-06-28T09:59:07.840 回答
2

从手册:

The LIMIT clause can be used to constrain the number of rows 
returned by the SELECT statement. LIMIT takes one or two numeric 
arguments, which must both be nonnegative integer constants  
(except when using prepared statements). 

MySQL 手册 - 12.2.8。选择语法

所以这是一个不 - 你不能。

于 2010-03-08T18:42:09.317 回答