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。SELECT 構文

それはノーです - あなたはできません。

于 2010-03-08T18:42:09.317 に答える