3
DELIMITER $$
DROP PROCEDURE IF EXISTS eventsNearMe$$
CREATE PROCEDURE eventsNearMe(IN inIP VARCHAR(16))
BEGIN
DECLARE ipLAT FLOAT;
DECLARE ipLONG FLOAT;
SELECT iplocationdb_location.latitude, iplocationdb_location.longitude
INTO ipLAT, ipLONG
FROM `iplocationdb_ip`
LEFT JOIN iplocationdb_location ON iplocationdb_location.id=iplocationdb_ip.location_id
WHERE iplocationdb_ip.prefix=(INET_ATON(inIP)>>24)
AND INET_ATON(inIP) BETWEEN iplocationdb_ip.start_ip AND iplocationdb_ip.end_ip LIMIT 1;
CREATE TEMPORARY TABLE tempEVENTS
SELECT `eid`,(((acos(sin((ipLAT*pi()/180)) * sin((`lat`*pi()/180))+cos((ipLAT*pi()/180)) * cos((`lat`*pi()/180)) * cos(((ipLONG- `long`)*pi()/180))))*180/pi())*60*1.1515) as d FROM `mke_events` HAVING `d` <= 10 LIMIT 1;
SELECT * FROM tempEVENTS;
DROP TEMPORARY TABLE tempEVENTS;
END
$$
DELIMITER ;
위의 코드는 제 생각에 주어진 IP 주소 근처에서 이벤트를 얻기 위해 빠른 sp를 작성해야합니다. 그러나 모든 검색을 통해 DELIMITER (줄 1)에 1064를 던지는 만족스러운 이유를 찾지 못했습니다.
내가 그냥 경우에도 :mySQL DELIMITER throwing 1064
DELIMITER $$
SELECT * FROM iplocationdb_location;
$$
DELIMITER ;
아직 1064 MySQL 버전 5.0.77을 발생합니다.
참고 : DELIMITER와 구분 문자열 사이에 공백이 있습니다. NOTE2 : heidiSQL을 사용하여이 스크립트를 실행하고 있습니다.이 스크립트는 필자의 이해에 따라 명령 줄에서 실행해야합니다.
내가 마지막 줄은'DELIMITER해야한다고 생각; $$' – Vijay
업데이트 : SQL 파일을 다른 사람에게 넘겨주고 SP를 만들었습니다. 이상한가? – meteorainer
다른 업데이트 : 권한에 문제가있는 것 같습니다. 왜 그것이 구문 오류로 끝나는지 확신 할 수 없지만 지금은 괜찮아 보입니다. – meteorainer