我有一个包含select语句的过程selectproc。我想添加一个过程param limitrowscount并使用它如下:

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

但这种方法行不通。
选择本身包含嵌套的子查询,因此我无法从中创建视图。有没有比动态sql(准备好的语句)更有效的方法?

最佳答案

CREATE PROCEDURE SelectProc (IN LimitRowsCount INT)
BEGIN

SET @LimitRowsCount1=LimitRowsCount;

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

EXECUTE STMT USING @LimitRowsCount1;

END

10-08 09:10