我正在写一个存储过程,其中有一个名为 my_size 的输入参数,它是一个 INTEGER 。我希望能够LIMIT在SELECT语句的子句中使用它。显然,这不受支持,是否有解决方法?
LIMIT
SELECT
# I want something like: SELECT * FROM some_table LIMIT my_size; # Instead of hardcoding a permanent limit: SELECT * FROM some_table LIMIT 100;
通过搜索找到了这篇文章。我在下面粘贴了相关文本。
这是一个论坛帖子,显示了准备好的语句的示例,可让您将变量值分配给limit子句: http://forums.mysql.com/read.php?98,126379,133966#msg-133966 但是,我认为该错误应该引起注意,因为我无法想象过程中的准备好的语句将允许进行任何过程编译时优化。我感觉到准备好的语句是在过程的运行时编译和执行的,这种概率对效率有负面影响。如果limit子句可以接受常规过程变量(例如,过程参数),则数据库仍可以在过程中对其余查询执行编译时优化。这可能会更快地执行该过程。我不是专家。
这是一个论坛帖子,显示了准备好的语句的示例,可让您将变量值分配给limit子句:
http://forums.mysql.com/read.php?98,126379,133966#msg-133966
但是,我认为该错误应该引起注意,因为我无法想象过程中的准备好的语句将允许进行任何过程编译时优化。我感觉到准备好的语句是在过程的运行时编译和执行的,这种概率对效率有负面影响。如果limit子句可以接受常规过程变量(例如,过程参数),则数据库仍可以在过程中对其余查询执行编译时优化。这可能会更快地执行该过程。我不是专家。