El problema es que el parámetro del procedimiento tiene el mismo nombre que una columna en las tablas. Cuando se refiere a propertyid
en las consultas, usa la columna, no el parámetro. Los nombres de columnas y variables no distinguen entre mayúsculas y minúsculas, por lo que no importa que haya escrito uno de ellos PropertyID
y el otro propertyId
.
Utilice un nombre diferente para el parámetro, p. p_propertyId
Además, no hay necesidad de dos consultas, puede hacerlo en uno con 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
Tenga en cuenta que usar LIMIT
sin ORDER BY
significa que la fila seleccionada será impredecible.