我正在尝试创建一个存储过程。这是我到目前为止(不起作用)的内容:
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是我创建的可以正常工作的函数。如您所见,我正在尝试从“城市”表中获取城市的ID,然后将cityLat和cityLng设置为该记录的其他值。我显然在这里通过使用SELECTs做错了。
这有可能吗?看来应该如此。任何帮助将不胜感激。
更正了一些问题,并添加了一个替代选择-适当删除。
DELIMITER |
CREATE PROCEDURE getNearestCities
(
IN p_cityID INT -- should this be int unsigned ?
)
BEGIN
DECLARE cityLat FLOAT; -- should these be decimals ?
DECLARE cityLng FLOAT;
-- method 1
SELECT lat,lng into cityLat, cityLng FROM cities WHERE cities.cityID = p_cityID;
SELECT
b.*,
HAVERSINE(cityLat,cityLng, b.lat, b.lng) AS dist
FROM
cities b
ORDER BY
dist
LIMIT 10;
-- method 2
SELECT
b.*,
HAVERSINE(a.lat, a.lng, b.lat, b.lng) AS dist
FROM
cities AS a
JOIN cities AS b on a.cityID = p_cityID
ORDER BY
dist
LIMIT 10;
END |
delimiter ;
问题内容: 我有一个存储过程,返回一个。如何在语句中使用此存储过程的结果? 我需要这样的东西 我正在使用SQL Server 2005 问题答案: 而是创建一个表值的用户定义函数。
问题内容: 我在存储过程中有一条更新语句,该语句通常如下所示: 是否只有当变量不为null或值-1时才触发更新语句的好方法? 类似于一个问题。 太感谢了。 问题答案: 使用T-SQL : 看一下MSDN文档。
问题内容: 我正在创建一个存储过程,我要将逗号分隔的ID列表作为变量传递给该存储过程。我想将Ids用作select语句,例如: 显然,我得到的错误是varchar而不是INT,但是如何转换逗号分隔列表? 问题答案: 对于这些情况,我使用此表函数,您可以根据需要进行调整: 在您的存储过程中,您将像这样使用它:
我正在使用带有Sybase ASE数据库的powerbuilder。我在从应用程序执行更新时调用存储过程,但在存储过程中出现错误。我想在存储过程中放置一些打印语句以检查错误是什么。如何查看此打印语句的输出?如何记录存储过程? 提前谢谢Sharmistha
本文向大家介绍将列的值存储到MySQL存储过程的变量中,包括了将列的值存储到MySQL存储过程的变量中的使用技巧和注意事项,需要的朋友参考一下 要声明变量,请在MySQL存储过程中使用DECLARE。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是创建存储过程并将上述表的列值存储在存储过程变量中的查询- 调用存储过程- 这
本文向大家介绍MySQL 存储过程中执行动态SQL语句的方法,包括了MySQL 存储过程中执行动态SQL语句的方法的使用技巧和注意事项,需要的朋友参考一下