如何使用Postgresql中的存储过程实现这一点?

如何使用Postgresql中的存储过程实现这一点?,sql,postgresql,stored-procedures,Sql,Postgresql,Stored Procedures,我正在计算逐步执行此查询的坐标之间的距离 /*insert into clients_res(select clients.pid, clients.owner_id, dist.country, dist.city, dist.distance, clients.inwork from clients left outer join dist on clients.pid = dist.pid); */ 四, /*更新客户端\u res set-inwork=0 其中距离>0*/

我正在计算逐步执行此查询的坐标之间的距离

/*insert into clients_res(select clients.pid, clients.owner_id, dist.country, dist.city, dist.distance, clients.inwork  from clients left outer join dist on clients.pid = dist.pid);
 */
  • 四,

    /*更新客户端\u res set-inwork=0 其中距离>0*/
    如何将其转换为过程?

    您是否考虑过使用PostGIS进行计算?你至少应该为可读性定义自己的函数不,我没有使用PostGIS。我只需要博士后来做。 select *, cast(ATAN(SQRT(power((COS(tmp11.lat*PI()/180)*SIN(city.lon1*PI()/180-tmp11.lon*PI()/180)),2)+power((COS(city.lat1*PI()/180) *SIN(tmp11.lat*PI()/180)-SIN(city.lat1*PI()/180)*COS(tmp11.lat*PI()/180)*COS(city.lon1*PI()/180-tmp11.lon*PI()/180)),2))/ (SIN(city.lat1*PI()/180)*SIN(tmp11.lat*PI()/180)+COS(city.lat1*PI()/180)*COS(tmp11.lat*PI()/180)*COS(city.lon1*PI()/180-tmp11.lon*PI()/180)))*6372795 as int) as distance into dist from tmp11 inner join city on cast(ATAN(SQRT(power((COS(tmp11.lat*PI()/180)*SIN(city.lon1*PI()/180-tmp11.lon*PI()/180)),2)+power((COS(city.lat1*PI()/180) *SIN(tmp11.lat*PI()/180)-SIN(city.lat1*PI()/180)*COS(tmp11.lat*PI()/180)*COS(city.lon1*PI()/180-tmp11.lon*PI()/180)),2))/ (SIN(city.lat1*PI()/180)*SIN(tmp11.lat*PI()/180)+COS(city.lat1*PI()/180)*COS(tmp11.lat*PI()/180)*COS(city.lon1*PI()/180-tmp11.lon*PI()/180)))*6372795 as int) between 0 and 60000

    /*insert into clients_res(select clients.pid, clients.owner_id, dist.country, dist.city, dist.distance, clients.inwork  from clients left outer join dist on clients.pid = dist.pid);
     */
    
    /*update clients_res set inwork=0 where distance>0;*/