PostgreSQL 存储过程详细案例
-- 创建一个存储过程,用于计算两个给定点之间的距离
CREATE OR REPLACE FUNCTION distance_between_points(point1 geometry, point2 geometry)
RETURNS float8 AS $$
BEGIN
RETURN ST_Distance(point1::geography, point2::geography);
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- 调用存储过程计算两点之间的距离
SELECT distance_between_points(
ST_GeomFromText('POINT(-71.1043482 42.3150468)')
, ST_GeomFromText('POINT(-70.885506 42.339829)')
);
-- 结果将是两点之间的距离,单位为米
这个例子展示了如何在PostgreSQL中创建一个计算两个地理坐标点之间距离的函数。函数使用PostGIS扩展中的ST_Distance
函数,该函数接受两个地理坐标点并返回它们之间的距离。这个存储过程是不可变的(IMMUTABLE)且严格模式(STRICT),意味着它总是返回确定的结果,并且对于NULL输入会返回NULL。
评论已关闭