sql >> Databasteknik >  >> RDS >> Mysql

MYSQL lagrad procedur för uppdateringsvariabler är 0

Problemet är att procedurparametern har samma namn som en kolumn i tabellerna. När du hänvisar till propertyid i frågorna använder den kolumnen, inte parametern. Kolumn- och variabelnamn är skiftlägesokänsliga, så det spelar ingen roll att du stavat ett av dem PropertyID och den andra propertyId .

Använd ett annat namn för parametern, t.ex. p_propertyId

Dessutom finns det inget behov av två frågor, du kan göra det i en med en 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

Observera att du använder LIMIT utan ORDER BY betyder att raden som väljs kommer att vara oförutsägbar.




  1. använd kommandot database_name i PostgreSQL

  2. 8 funktioner för att återställa dagen från ett datum i MariaDB

  3. Undertryck varningsmeddelanden med mysql från terminalen, men lösenordet skrivet i bash-skript

  4. Använd XEvent Profiler för att fånga frågor i SQL Server