如何在存储过程中进行计算
时间:2011-12-14
来源:互联网
as
selecta.road_id,a.termid,a.User_ID,b.longitude,b.latitudefrom SYSTEM_DATA_ROAD a,SYSTEM_DATA_ROAD_INFO bwherea.begin_date<'2011-12-13'anda.begin_date>'2011-12-12'anda.road_id=b.road_idandb.timeat>'2011-12-12'andb.timeat<'2011-12-13'
select m.region_id,m.corp_id,m.corp_cnname,m.corp_address,n.longitude,n.latitudefromsystem_data_corp m,system_data_corp_reg nwherem.corp_id=n.corp_idand(n.longitude<>'0'orn.latitude<>'0')
go
上面的是存储过程
我想把得到的 b.longitude,b.latitude 跟 n.longitude,n.latitude 带到一个计算公式里进行计算。 不知道怎么写。请人指点。
下面就是个计算公式。
程序代码:
doubley1=b.longitude
doubley2=b.latitude
doublex1=n.longitude
doublex2=n.latitude
doubleEa=6378137
doubleEb=6356725
Long=y1
Lat= x1
Long2=y2
Lat2= x2
LongRad=Long* 3.1415926/180;
LatRad=Lat* 3.1415926 /180;
Ec=Eb+(Ea-Eb)*(90-Lat)/90;
Ed=Ec*Math.Cos(LatRad);
LongRad2=Long2*3.1415926/180;
LatRad2=Lat2*3.1415926 /180;
Ec2=Eb+(Ea-Eb)*(90-Lat)/90;
Ed2=Ec*Math.Cos(LatRad2);
doubledx=(LongRad2-LongRad)*Ed;
doubledy=(LatRad2-LatRad)*Ec;
doubled=Sqrt(dx*dx+dy*dy);
作者: kgdipbyve444 发布时间: 2011-12-14
作者: qianjin036a 发布时间: 2011-12-14
作者: fredrickhu 发布时间: 2011-12-14
作者: ssp2009 发布时间: 2011-12-14
晕 这个不用程序来计算吗?不一定所有的业务逻辑都要用数据库解决吧
上头要这样弄没办法。。
作者: kgdipbyve444 发布时间: 2011-12-14
create procedure tests as begin declare @y1 float,@y2 float,@x1 float,@x2 float,@Ea float,@Eb float,@Ec float,@Ec2 float declare @Long float,@Lat float,@Long2 float,@Lat2 float,@LongRad float,@LatRad float declare @LongRad2 float,@LatRad2 float,@dx float,@dy float,@ed float,@Ed2 float select @y1=b.longitude,@y2=b.latitude from SYSTEM_DATA_ROAD a,SYSTEM_DATA_ROAD_INFO b where a.begin_date<'2011-12-13' and a.begin_date>'2011-12-12' and a.road_id=b.road_id and b.timeat>'2011-12-12' and b.timeat<'2011-12-13' select @x1=n.longitude,@x2=n.latitude from system_data_corp m,system_data_corp_reg n where m.corp_id=n.corp_id and (n.longitude<>'0' or n.latitude<>'0') set @Ea=6378137 set @Eb=6356725 set @Long=@y1 set @Lat= @x1 set @Long2=@y2 set @Lat2= @x2 set @LongRad=@Long* 3.1415926/180; set @LatRad=@Lat* 3.1415926 /180; set @Ec=@Eb+(@Ea-@Eb)*(90-@Lat)/90; set @Ed=@Ec*Cos(@LatRad); set @LongRad2=@Long2*3.1415926/180; set @LatRad2=@Lat2*3.1415926 /180; set @Ec2=@Eb+(@Ea-@Eb)*(90-@Lat)/90; set @Ed2=@Ec*Cos(@LatRad2); set @dx=(@LongRad2-@LongRad)*@Ed; set @dy=(@LatRad2-@LatRad)*@Ec; set @ed=Sqrt(@dx*@dx+@dy*@dy); select @dx,@dy,@ed end go
作者: qianjin036a 发布时间: 2011-12-14
把数据库取到客户端去计算吧,数据库计算效率不高
上头要这样算。。没办法。
作者: kgdipbyve444 发布时间: 2011-12-14
SQL code
create procedure tests
as
begin
declare @y1 float,@y2 float,@x1 float,@x2 float,@Ea float,@Eb float,@Ec float,@Ec2 float
declare @Long float,@Lat float,@Long2 float,@Lat2 float,@LongRa……
这个是不是每输出一条数据的时候他就会把下面的式子运行 一次?
(这两表的数据比较多)
作者: kgdipbyve444 发布时间: 2011-12-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28