Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gespeicherte MYSQL-Prozeduren für Aktualisierungsvariablen sind 0

Das Problem ist, dass der Prozedurparameter den gleichen Namen hat wie eine Spalte in den Tabellen. Wenn Sie sich auf propertyid beziehen in den Abfragen verwendet es die Spalte, nicht den Parameter. Bei Spalten- und Variablennamen wird die Groß-/Kleinschreibung nicht beachtet, daher spielt es keine Rolle, ob Sie einen von ihnen PropertyID geschrieben haben und die andere propertyId .

Verwenden Sie einen anderen Namen für den Parameter, z. p_propertyId

Außerdem sind keine zwei Abfragen erforderlich, Sie können dies in einer mit einem JOIN tun .

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

Beachten Sie, dass die Verwendung von LIMIT ohne ORDER BY bedeutet, dass die ausgewählte Zeile unvorhersehbar ist.