Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O procedimento armazenado MYSQL para variáveis ​​de atualização são 0


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.