MySQL에서 저장된 프로 시저 매개 변수로 선택된 행을 제한
문제
SelectProc Wich에는 SELECT 문이 포함 된 절차가 있습니다. 프로 시저를 추가하고 다음과 같이 사용하고 싶습니다.
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).
그래서 그것은 아니요 - 당신은 할 수 없습니다.
제휴하지 않습니다 StackOverflow