gpt4 book ai didi

MySql存储过程,如何用CONCAT插入多个变量

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:42 24 4
gpt4 key购买 nike

基本上我有以下存储过程:

BEGIN
SET @query := CONCAT("SELECT *,
sqrt(
(POW(a.Latitude - co.CenterLatitude, 2)* 68.1 * 68.1) +
(POW(a.Longitude - co.CenterLongitude, 2) * 53.1 * 53.1)
) AS distance
FROM table1 as r
JOIN table2 as co ON co.field1 = r.field2
JOIN table3 AS a ON r.field1 = a.field2
WHERE ",rid);

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END

它有以下传递:

IN rid varchar(500), lat double, lon double

但是我需要传入纬度和经度变量。我试过设置它们然后将它们添加到查询中但它无法识别它们。这是我正在尝试做的,但没有成功:

    BEGIN
SET @lat := lat;
SET @lon := lon;
SET @query := CONCAT("SELECT *,
sqrt(
(POW(a.Latitude - @lat, 2)* 68.1 * 68.1) +
(POW(a.Longitude - @lon, 2) * 53.1 * 53.1)
) AS distance
FROM table1 as r
JOIN table2 as co ON co.field1 = r.field2
JOIN table3 AS a ON r.field1 = a.field2
WHERE ",rid);

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END

我不确定如何完成此操作。有没有人有什么建议?提前致谢!!

最佳答案

您可以将 ? 占位符放在准备好的语句中,然后在执行时提供值。

SET @query := CONCAT("SELECT *,
sqrt(
(POW(a.Latitude - ?, 2)* 68.1 * 68.1) +
(POW(a.Longitude - ?, 2) * 53.1 * 53.1)
) AS distance
FROM table1 as r
JOIN table2 as co ON co.field1 = r.field2
JOIN table3 AS a ON r.field1 = a.field2
WHERE ",rid);
PREPARE stmt FROM @query;
EXECUTE stmt USING @lat, @lon;

关于MySql存储过程,如何用CONCAT插入多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com