الحد من الصفوف المحددة عد مع معلمة إجراء مخزنة في MySQL

StackOverflow https://stackoverflow.com/questions/2402307

  •  18-09-2019
  •  | 
  •  

سؤال

لدي إجراء SelectProc Wich يحتوي على بيان محدد. أريد إضافة إجراء Param LimitrowsCount واستخدامه على النحو التالي:

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

لكن هذا النهج لا يعمل.

يحتوي SELECT نفسه على سجلا متداخلا لذلك لا يمكنني إنشاء طريقة عرض منه. هل هناك مزيد من المزعم ثم SQL الديناميكي (البيانات المعدة)؟

هل كانت مفيدة؟

المحلول

CREATE PROCEDURE SelectProc (IN LimitRowsCount INT) 
BEGIN

SET @LimitRowsCount1=LimitRowsCount; 

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

EXECUTE STMT USING @LimitRowsCount1; 

END

نصائح أخرى

من الدليل:

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. حدد بناء الجملة

لذلك هذا لا - لا يمكنك ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top