Mysql
 sql >> Base de données >  >> RDS >> Mysql

La procédure stockée MYSQL pour les variables de mise à jour est 0

Le problème est que le paramètre de procédure porte le même nom qu'une colonne dans les tables. Lorsque vous faites référence à propertyid dans les requêtes, il utilise la colonne, pas le paramètre. Les noms de colonne et de variable sont insensibles à la casse, donc peu importe que vous épeliez l'un d'entre eux PropertyID et l'autre propertyId .

Utilisez un nom différent pour le paramètre, par ex. p_propertyId

De plus, il n'y a pas besoin de deux requêtes, vous pouvez le faire en une seule avec un 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

Notez que l'utilisation de LIMIT sans ORDER BY signifie que la ligne sélectionnée sera imprévisible.