PostgreSql 函数
DECLARE
curParkingTime TIMESTAMP ;
curLeavingTime TIMESTAMP;
parkingSpaceIndexCode VARCHAR[]; days INTEGER; --间隔天数
duration INTEGER; -- 停车时长
i INTEGER;
plateNo VARCHAR; -- 车牌号
BEGIN
curLeavingTime = $2;
--RAISE INFO ' aaa aaa';
--获取indexcode数组
select ARRAY_AGG(indexcode) INTO parkingSpaceIndexCode from pms_parkingspace;
if (array_length(parkingSpaceIndexCode, 1)>0) then
i :=0;
WHILE i < $1 LOOP
i := i+1;
for index in 1..array_length(parkingSpaceIndexCode, 1) loop
--得到停车时长和车牌5位随机数
select '浙A'|| trunc(random() * (99999-10000 + 1) + 10000) into plateNo;
duration = cast (random()*1000 as INTEGER);
--使leavingtime随机
curLeavingTime = curLeavingTime + cast(cast (random()*100 as INTEGER)|| 'min' as INTERVAL);
--leavingtime减去duration得到parkingtime
curParkingTime = curLeavingTime - cast( duration || 'min' as INTERVAL) ;
--RAISE NOTICE 'indexCode is %,plateNo is %',parkingSpaceIndexCode[index],plateNo;
INSERT INTO pms_parking_space_history(space_index_code,parking_time,leaving_time,parking_duration,plate_no) values(parkingSpaceIndexCode[index],curParkingTime,curLeavingTime,duration,plateNo); end loop; --使下次循环的日期递减
curLeavingTime = curParkingTime - INTERVAL '1 day'; END LOOP;
end if;
END;
执行
select generate_history_data(2, '2016-11-30 10:10:00')
导出后的建函数语句:
CREATE OR REPLACE FUNCTION "public"."generate_history_data(loopcounts int4, enddate timestamp)"(loopcounts int4, enddate timestamp)
RETURNS "pg_catalog"."void" AS $BODY$
DECLARE
curParkingTime TIMESTAMP ;
curLeavingTime TIMESTAMP;
parkingSpaceIndexCode VARCHAR[]; days INTEGER; --间隔天数
duration INTEGER; -- 停车时长
i INTEGER;
plateNo VARCHAR; -- 车牌号
BEGIN
curLeavingTime = $2;
--RAISE INFO ' aaa aaa';
--获取indexcode数组
select ARRAY_AGG(indexcode) INTO parkingSpaceIndexCode from pms_parkingspace;
if (array_length(parkingSpaceIndexCode, 1)>0) then
i :=0;
WHILE i < $1 LOOP
i := i+1;
for index in 1..array_length(parkingSpaceIndexCode, 1) loop
--得到停车时长和车牌5位随机数
select '浙A'|| trunc(random() * (99999-10000 + 1) + 10000) into plateNo;
duration = cast (random()*1000 as INTEGER);
--使leavingtime随机
curLeavingTime = curLeavingTime + cast(cast (random()*100 as INTEGER)|| 'min' as INTERVAL);
--leavingtime减去duration得到parkingtime
curParkingTime = curLeavingTime - cast( duration || 'min' as INTERVAL) ;
--RAISE NOTICE 'indexCode is %,plateNo is %',parkingSpaceIndexCode[index],plateNo;
INSERT INTO pms_parking_space_history(space_index_code,parking_time,leaving_time,parking_duration,plate_no) values(parkingSpaceIndexCode[index],curParkingTime,curLeavingTime,duration,plateNo); end loop; --使下次循环的日期递减
curLeavingTime = curParkingTime - INTERVAL '1 day'; END LOOP;
end if;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100
; ALTER FUNCTION "public"."generate_history_data(loopcounts int4, enddate timestamp)"(loopcounts int4, enddate timestamp) OWNER TO "postgres";
PostgreSql 函数的更多相关文章
- postgresql 函数 参数为复合类型
postgresql没有存储过程,但是函数功能很强大. 在近期开发的电商管理平台中,对于产品的类目管理,设计时有个属性字段,设为字符数组,但是EF不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...
- PostgreSQL自学笔记:6 PostgreSQL函数
6 PostgreSQL函数 6.2 数学函数 abs(x) 绝对值 pi() 圆周率π select abs(-3),pi(); cookie: MySQL中的pi()默认值3.141593, Po ...
- PostgreSQL函数(存储过程)----笔记
PostgreSQL 函数也称为 PostgreSQL 存储过程. PostgreSQL 函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程 ...
- 用Python写了一个postgresql函数,感觉很爽
用Python写了一个postgresql函数,感觉很爽 CREATE LANGUAGE plpythonu; postgresql函数 CREATE OR REPLACE FUNCTION myfu ...
- PostgreSQL函数如何返回数据集 [转]
PostgreSQL函数如何返回数据集 以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例. 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的这两个对 ...
- postgresql 函数返回结果集(zz)
pgsql function 系列之一:返回结果集--------------------------------------------------------------------------- ...
- postgresql 函数demo
create or replace function refresh_product_usage() returns void as $$ declare rec record; sub_rec re ...
- Oracle 与 PostgreSQL 函数行为的差异引发性能差异
对于Oracle,对于数据修改的操作通过存储过程处理,而对于函数一般不进行数据修改操作.同时,函数可以通过 Select 进行调用,而存储过程则不行. 一.对于volatile 函数的行为 1.Ora ...
- postgresql 函数&存储过程 ; 递归查询
函数:http://my.oschina.net/Kenyon/blog/108303 紧接上述,补充一下: 输入/输出参数的函数demo(输入作为变量影响sql结果,输出作为结果返回) create ...
- 编写postgresql函数执行循环copy命令导入大数据
CREATE OR REPLACE FUNCTION copyData() RETURNS boolean AS $BODY$ DECLARE i int; begin i :=1; FOR i IN ...
随机推荐
- [javase学习笔记]-7.2 构造函数与一般函数的差别
这一节我们简单学习一下构造函数与一般函数之间的差别所在. 那么它们有什么差别呢,结合上一节,我们能够总结出下面两点差别: 第一个差别: 构造函数:对象创建时,就会调用与之相应的构造函数,对对象进行初始 ...
- iOS 优秀开源框架 开源包 开发包 from : Podfile of chatsecure ---待完善
前段时间发现chatsecure的podfile中使用了很多非常优秀的开源包 和 大公司的sdk. 拿出来分享下. 各个类库的作用待完善. platform :ios, "7.0" ...
- java中的switch case default break
package com.didispace; /** * Created by gmq on 2017/08/07. * * @version 1.0 * @since 2017/08/07 10:4 ...
- Android开发实现计算器的例子
例子 代码如下 复制代码 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" a ...
- 常用代码之七:静态htm如何包含header.htm和footer.htm。
要实现这个有多种解决方案,比如asp, php, 服务器端技术,IFrame等,但本文所记录的仅限于用jQuery和纯htm的解决方案. <head> <title></ ...
- 更新django到2.x
django-2.x 已经发布了.想体验一下它的新功能.于是把之前电脑上的django-1.11.7uninstall 掉 一.卸载django-1.11.7: pip3 uninstall djan ...
- mysql group replication 主节点宕机恢复
一.mysql group replication 生来就要面对两个问题: 一.主节点宕机如何恢复. 二.多数节点离线的情况下.余下节点如何继续承载业务. 在这里我们只讨论第一个问题.也就是说当主结点 ...
- tuple与list
tuple是一个引用之后就不可以修改的类型,是一个immutable类型 list是一个mutable的类型,引用之后是可以修改的.同时可以通过索引来修改list中各个元素.这一点是tuple做不到的 ...
- Windows Mobile入门
转自 http://www.cnblogs.com/peterzb/archive/2009/05/12/1455256.html [准备篇] 最近安排做手机视频监控方面开发,这个对我来 ...
- [na]交换机原理/macof
交换机的工作原理 简单来说,就是根据源mac学习-->形成cam表,根据cam表转发. 正常情况下先arp广播,sw收到后发到本vlan所有出口,所有机器学习更新arp缓存. 目标机返回单播ar ...