Problem polega na tym, że parametr procedury ma taką samą nazwę jak kolumna w tabelach. Kiedy odwołujesz się do propertyid
w zapytaniach używa kolumny, a nie parametru. W nazwach kolumn i zmiennych wielkość liter nie jest rozróżniana, więc nie ma znaczenia, że wpisałeś jedną z nich PropertyID
i drugi propertyId
.
Użyj innej nazwy dla parametru, np. p_propertyId
Ponadto nie ma potrzeby wykonywania dwóch zapytań, możesz to zrobić w jednym za pomocą 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
Pamiętaj, że używając LIMIT
bez ORDER BY
oznacza, że wybrany wiersz będzie nieprzewidywalny.