sql >> Base de Datos >  >> RDS >> Mysql

El procedimiento almacenado MYSQL para las variables de actualización es 0

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.