Vấn đề là tham số thủ tục có cùng tên với một cột trong bảng. Khi bạn tham khảo propertyid
trong các truy vấn, nó sử dụng cột, không phải tham số. Tên cột và tên biến không phân biệt chữ hoa chữ thường, vì vậy bạn đánh vần một trong số chúng PropertyID
không quan trọng và propertyId
khác .
Sử dụng một tên khác cho tham số, ví dụ:p_propertyId
Ngoài ra, không cần hai truy vấn, bạn có thể thực hiện trong một truy vấn với JOIN
.
UPDATE sales.florida AS s
CROSS JOIN (
SELECT *
FROM annuals.florida
WHERE propertyId = p_propertyId
LIMIT 1) AS a
SET s.SitusLongitude = a.SitusLongitude, s.SitusLatitude = a.SitusLatitude
WHERE s.PROPERTYUNIQUEID = p_propertyId
Lưu ý rằng sử dụng LIMIT
không có ORDER BY
có nghĩa là hàng được chọn sẽ không thể đoán trước được.