Mysql
 sql >> Database >  >> RDS >> Mysql

La procedura memorizzata MySQL per le variabili di aggiornamento è 0

Il problema è che il parametro della procedura ha lo stesso nome di una colonna nelle tabelle. Quando fai riferimento a propertyid nelle query utilizza la colonna, non il parametro. I nomi di colonne e variabili non fanno distinzione tra maiuscole e minuscole, quindi non importa se ne hai digitato uno PropertyID e l'altro propertyId .

Utilizzare un nome diverso per il parametro, ad es. p_propertyId

Inoltre, non sono necessarie due query, puoi farlo in una con 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

Nota che usando LIMIT senza ORDER BY significa che la riga selezionata sarà imprevedibile.