簡體   English   中英

MySQL存儲過程查詢限制

[英]Mysql stored procedure limit on query

我只想通過存儲中的參數來限制查詢,但是在LIMIT字段中出現錯誤:

DELIMITER //
DROP FUNCTION IF EXISTS test//
CREATE PROCEDURE test(lim INT)
  BEGIN
    SELECT * FROM logs LIMIT 0,lim; 
  END //
DELIMITER ;

我想念什么?

MySQL LIMIT子句有一些限制。 請在此處參考已知的bug id=11918

這不是特定於存儲的例程。
LIMIT不允許在任何上下文中使用變量
它的參數必須是整數常量。

解決方法是在存儲過程中使用准備好的語句。

范例

mysql> DROP PROCEDURE IF EXISTS names_proc;
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER //
mysql> CREATE PROCEDURE names_proc( lim INT )
    ->   BEGIN
    ->     PREPARE STMT FROM 'SELECT * FROM names LIMIT 0, ?';
    ->     EXECUTE STMT USING @lim;
    ->   END;
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql> CALL names_proc( 3 );
+------+----------+
| id   | name     |
+------+----------+
|    1 | jimjoe   |
|    2 | jimddjoe |
|    3 | jim      |
+------+----------+
3 rows in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM