Postgres存储过程

来源:互联网 发布:淘宝客返利怎么算 编辑:程序博客网 时间:2024/06/05 21:52

老师要求写个postgres的存储过程,第一次写存储过程,网上postgres存储过程的资料好少啊,查来查去都是两篇被转来转去,写了2天快崩溃了,还是没写出来,中午老师让写一个详细设计给他看,他又帮我修改了一下,最后终于完成了。

 

老师说写东西设计要比编码重要,我的思维是乱的,详细设计写不出来再让我写10天也还是写不出来,要学会怎么查。

 

真的意识到了设计分析的重要性。

 

不多说,说问题:

 

要求:value字段为text类型,存储了一些参数,参数中有换行,需要把value的值按换行符拆分出来存入另一张表。

 

分析:

 

0.先从pressData表中取得一行数据,获得value, transctionId,
1.将value字段拆分开,用split_part()
2.用循环控制取出value字段拆分内容,并依次存入数组
3.取出数组内容依次拆入convert表中transactionid,s001...s060
 insert into tablename values(transactionid,v[0],v[1]...v[59])


拆分函数:

select split_part("Value",'/n',3)
from "pressureData"
order by "ID" desc
limit 1;

存储过程:

split1:

split2:

 

 

思路是这样的,在split1(int)中可以将一行中的value拆分出来,当时在split1(int)中写了个嵌套循环,没有实现想要的功能,不知道为什么,所以又写了个split2()来做循环调用split1(int),实验了一下可以成功。

 

经过多次修改得到最终版

 将以上两个函数合并为一个函数并且做到从pressureData表将Value字段拆分出来,然后经过16进制转换(需调用另外一个存储过程16进制转10进制),再经过公式计算,将结果存入

sensorPressure表

 

16进制转10进制存储过程:

 

 

 

调用存储过程select * from pressureDataToSensorPressure();

 

 

 

 

另外加一个查询函数:

1.按每个月份统计数据把每月的数据统计出来

 

 

 

 终于把项目做完了,告一段落,总结补充一下。

最终的存储过程:

 

 

原创粉丝点击