Từ quy trình bạn đã đưa vào, có vẻ như dấu phân cách của bạn được đặt thành $$
.
Nếu vậy, hãy thử cách sau:
CREATE FUNCTION inrange(
lat1 decimal(11, 7),
lon1 decimal(11, 7))
RETURNS INT(1)
READS SQL DATA
BEGIN
DECLARE distance decimal(18, 10);
SET distance = ACOS(SIN(lat1)*SIN(targ2)+COS(lat1)*COS(targ2)*COS(targ3-lon1))*6371;
IF distance <= targ4 THEN
RETURN 1;
END IF;
RETURN 0;
END$$