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 ...
随机推荐
- ios处理键盘
#pragma mark - Keyboard - (void)addKeyboardNoti { [[NSNotificationCenter defaultCenter] addObserver: ...
- Android 版本对于 API
Android版本 API 代号 官网链接 Android 2.3.3 API 10 Gingerbread 官网 Android 3.0 API 11 Android 3.1 API 12 Andr ...
- opencv之haar特征+AdaBoos分类器算法流程(三)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- 星云 Android 开发工具箱
Toast 工具类: SmartToastUtils.java import android.content.Context; import android.widget.Toast; /** * T ...
- struts2(三) 输入校验和拦截器
前面知道了struts2的架构图和struts2的自动封装表单参数和数据类型自动转换,今天来学struts2的第三第四个东西,输入校验和拦截器, --WH 一.输入校验 在以前我们写一个登录页面时,并 ...
- sql字段组合唯一
create unique index [Itenmid_Uid] on Userchangeinfo(Itemid,Uid)
- elasticsearch 索引延迟 一致性问题等
https://www.elastic.co/guide/en/elasticsearch/guide/current/near-real-time.html https://www.elastic. ...
- Python 3.6 安装pip
1.首先python3.4以后,pip内嵌,不过使用方法是: python -m pip install django 2.如果你觉得上面的指令太长,想用旧方法使用pip,那用以下指令安装pip即可 ...
- c++11实现c++14的optional
c++14中将包含一个std::optional类,它的功能和用法和boost的optional类似.optional<T>内部存储空间可能存储了T类型的值也可能没有存储T类型的值,只有当 ...
- (原创)C++11改进我们的程序之简化我们的程序(三)
这次要讲的是:C++11如何通过auto.decltype和返回值后置来简化我们的程序. auto和c#中的var类似,都是在初始化时自动推断出数据类型.当某个变量的返回值难于书写时,或者不太确定返回 ...