문제

바라건대 이것은 해결하기에 좋은 빠른 것입니다.

다음은 내 .SQL 파일입니다.

USE my_db;

DELIMITER $$
CREATE PROCEDURE searchLocation(IN argQuery VARCHAR(32), IN argLimit INT)
BEGIN
  SELECT DISTINCT `suburb`, `postcode`
  FROM `location`
  WHERE `suburb` LIKE '%argQuery%'
  OR `postcode` LIKE 'argQuery%'
  LIMIT argLimit
  ;
END
$$
DELIMITER ;

이것은 출력입니다.

ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'argLimit
  ;
END' at line 8

그래서 그것은 내 매개 변수 인 Arglimit을 좋아하지 않는 것처럼 보이지만 그 이유를 해결할 수는 없습니다. 나는 바보 같은 일을하고 있어야합니다.

MySQL 5.0.51을 사용하고 있습니다.

감사.

도움이 되었습니까?

해결책

LIMIT MySQL의 절차 나 기능 내에서 일정해야하며 매개 변수를 매개 변수로 만들 수 없습니다. 그러나이 문제를 사용 하여이 문제를 해결할 수 있습니다. PREPARE ... EXECUTE ... USING 통사론.

이렇게 다소 보일 수 있습니다.

...
SET @qry= argQuery;
SET @lmt= argLimit;

PREPARE stmt FROM 'SELECT ... LIKE ? ... LIKE ? ... LIMIT ?';
EXECUTE stmt USING @qry, @qry, @lmt;
DEALLOCATE PREPARE stmt;

다른 팁

Marc Grue의 의견.

이 작업을 수행하는 속임수 : 주석의 테이블 ID를 가져 와서 URL에 앵커를 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top