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 ...
随机推荐
- jquery中页面Ajax方法$.load的功能
load语法 $(".selector").load("url", function(responseText, statusText, xmlhttprequ ...
- Java 8 Streams filter examples
1. Streams filter() and collect() package com.mkyong.java8; import java.util.Arrays;import java.util ...
- TDD 与 BDD 仅仅是语言描述上的区别么?
当然不是了,通过这个问题,我顺便跟大家聊聊 ATDD,TDD,BDD3者的区别,方便大家有一个清晰的认识和了解. ATDD: Acceptance Test Driven Development(验收 ...
- maven依赖包冲突解决办法
今天在写一个demo时报了以下错误 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding /slf4j-lo ...
- excel文件导入mysql
在数据处理的过程中,常常要把windows下的excel文件导入linux下的mysql.这其中会出现一些问题. 1.首先,要在mysql中建表.命令最好存在记事本中,可以随时修改,随时执行 crea ...
- 微信小程序之顶部固定和底部固定
顶部固定 <view style="position:fixed;top:0;"> ...... </view> 底部固定 <view style=& ...
- 奶瓶(beini)破解无线密码流程:安装、抓包、从虚拟机(VMware)拷贝握手包(拷贝到硬盘、U盘)、跑包
1. 环境 1). Windows 7 64位版本 2). VMware 9.0.2版本 3). 奶瓶1.2.3版本(beini-1.2.3.iso) 2. 安装 2.1 安装方式一 将beini-1 ...
- Java:集合,对列表(List)中的自定义对象按属性(字段)排序(正序、倒序)的方法
1. 要求 对列表(List)中的自定义对象,要求能够按照对象的属性(字段)进行排序(正序.倒序). 如:用户对象(Member)有用户名(username).级别(level).出生日期(birth ...
- ExtJs--05--给window组件加入功能条以及子组件获取上级或下级组件的属性和方法
Ext.onReady(function(){ /** 1-- 给容器组件加入控制条 及 控制项 控制条 不同的方向有多种 tbar lbar rbar bbar fbar 2-- 依据组件本身拿到上 ...
- 加快android studio 编译速度(已更新至Android Studio 3.3.1)
1.加快AS启动速度 “Help”-"Edit Custom Properties...",在文件中输入 # custom Android Studio properties di ...