加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Postgresql存储样例

发布时间:2020-12-13 17:39:44 所属栏目:百科 来源:网络整理
导读:-- Function: wsn_dynamic_amount_power(character varying,character varying,integer,numeric) -- DROP FUNCTION wsn_dynamic_amount_power(character varying,numeric); CREATE OR REPLACE FUNCTION wsn_dynamic_amount_power(app_id character varying,ar
-- Function: wsn_dynamic_amount_power(character varying,character varying,integer,numeric) -- DROP FUNCTION wsn_dynamic_amount_power(character varying,numeric); CREATE OR REPLACE FUNCTION wsn_dynamic_amount_power(app_id character varying,area_id character varying,node_id integer,data numeric) RETURNS boolean AS $BODY$ DECLARE node integer; sensor_data numeric(8,0); use_data numeric(8,0); work_time numeric(8,0); table_name1 varchar; table_name2 varchar; max_time time; min_time time; array_data varchar; id integer; BEGIN table_name1 = 'app_' || app_id || '_area_' || area_id || '_generation_power'; table_name2 = 'app_' || app_id || '_area_' || area_id || '_use_power'; --RAISE NOTICE '%',curr_date; IF node_id='30' OR node_id='31' OR node_id='32' THEN /* RAISE NOTICE '%',table_name1; */ EXECUTE 'SELECT generation_power FROM '|| table_name1 ||' WHERE node_id= ' || node_id ||' AND receive_date='''|| current_date ||'''' INTO sensor_data; /* RAISE NOTICE '%',sensor_data; RAISE NOTICE '%',data; RAISE NOTICE '%',current_date; */ IF sensor_data IS NULL THEN /* RAISE NOTICE '%','11OK'; */ EXECUTE 'INSERT INTO '|| table_name1 || ' (node_id,receive_date,generation_power) VALUES' || '(' || node_id || ',''' || current_date || ''',''' || data || ''')'; ELSE sensor_data := sensor_data + data; EXECUTE 'UPDATE ' || table_name1 || ' SET generation_power=''' || sensor_data || ''' WHERE receive_date=''' || current_date || ''' AND node_id=' || node_id; END IF; END IF; IF node_id='37' THEN EXECUTE 'SELECT id,use_power FROM '|| table_name2 || ' WHERE node_id= ' || node_id || ' AND receive_date='''|| current_date ||'''' INTO id,use_data; IF id IS NULL THEN /* RAISE NOTICE '%','11OK'; */ EXECUTE 'INSERT INTO '|| table_name2 || ' (node_id,use_power) VALUES' || '(' || node_id || ',' || data || ')'; ELSE use_data := use_data + data; EXECUTE 'UPDATE ' || table_name2 || ' SET use_power=''' || use_data || ''' WHERE receive_date=''' || current_date || ''' AND node_id=''' || node_id ||''' AND id=''' || id || ''''; END IF; END IF; RETURN true; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION wsn_dynamic_amount_power(character varying,numeric) OWNER TO wsn;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读