O problema é que o parâmetro do procedimento tem o mesmo nome de uma coluna nas tabelas. Quando você se refere a
propertyid
nas consultas, ele usa a coluna, não o parâmetro. Os nomes de colunas e variáveis não diferenciam maiúsculas de minúsculas, portanto, não importa se você digitou um deles PropertyID
e o outro propertyId
. Use um nome diferente para o parâmetro, por exemplo.
p_propertyId
Além disso, não há necessidade de duas consultas, você pode fazer isso em uma com um
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
Observe que usar
LIMIT
sem ORDER BY
significa que a linha selecionada será imprevisível.