MySQL procédure Stockée variables à partir d'instructions SELECT
Je suis en train de créer une procédure stockée. Voici ce que j'ai à ce jour (pas de travail):
DELIMITER |
CREATE PROCEDURE getNearestCities(IN cityID INT)
BEGIN
DECLARE cityLat FLOAT;
DECLARE cityLng FLOAT;
SET cityLat = SELECT cities.lat FROM cities WHERE cities.id = cityID;
SET cityLng = SELECT cities.lng FROM cities WHERE cities.id = cityID;
SELECT *, HAVERSINE(cityLat,cityLng, cities.lat, cities.lng) AS dist FROM cities ORDER BY dist LIMIT 10;
END |
HAVERSINE est une fonction que j'ai créé qui fonctionne très bien. Comme vous pouvez le voir je suis en train de prendre l'id d'une ville à partir des villes de la table, puis définissez cityLat et cityLng pour certains, d'autres valeurs de cet enregistrement. Je suis évidemment faire cette erreur en utilisant Sélectionne.
Est-ce même possible. Il semble qu'il devrait être. Toute aide que ce soit, sera grandement apprécié.
OriginalL'auteur Matt Harrison | 2012-05-18
Vous devez vous connecter pour publier un commentaire.
Corrigé un peu les choses et a ajouté une alternative sélectionnez - supprimer selon le cas.
OriginalL'auteur Jon Black
Il vous suffit de joindre votre
SELECT
les énoncés entre parenthèses pour indiquer qu'ils sont des sous-requêtes:Alternativement, vous pouvez utiliser MySQL
SELECT ... INTO
de la syntaxe. Un avantage de cette approche est que les deuxcityLat
etcityLng
peut être attribuée à partir d'un seul accès à la table:Cependant, l'ensemble de la procédure peut être remplacé par un seul auto-joint
SELECT
déclaration:OriginalL'auteur eggyal