Tôi sẽ xóa dấu chấm phẩy sau END
.
...
END
|
DELIMITER ;
Hãy xem lại nhận xét của bạn, bạn không thể sử dụng dấu phân cách hiện tại khi khai báo dấu phân cách mới. Nghe có vẻ khó hiểu, nhưng hãy cân nhắc nếu bạn làm điều này:
DELIMITER |;
Bây giờ MySQL sẽ nghĩ rằng dấu phân cách là "|;" (hai ký tự, một dấu gạch và một dấu chấm phẩy). Nếu bạn nghĩ về điều đó, hãy DELIMITER
phải được ứng dụng khách MySQL đối xử theo một cách đặc biệt. Đó là tuyên bố duy nhất không thể được theo sau bởi dấu phân cách hiện tại.
Vì vậy, khi đặt dấu phân cách thành dấu gạch ngang, hãy làm như sau:
DELIMITER |
Khi đặt nó trở lại dấu chấm phẩy, hãy làm như sau:
DELIMITER ;
FWIW, tôi đã chạy phần sau mà không có lỗi trên cơ sở dữ liệu thử nghiệm cục bộ của tôi trên MySQL 5.0.75:
DROP FUNCTION IF EXISTS PersonName;
DELIMITER |
CREATE FUNCTION PersonName( personID SMALLINT )
RETURNS CHAR(20)
BEGIN
DECLARE pname CHAR(20) DEFAULT '';
SELECT name INTO pname FROM family WHERE ID=personID;
RETURN pname;
END
|
DELIMITER ;