高效能源监控管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
5.2 KiB

CREATE OR REPLACE PROCEDURE pro_create_chillers_table()
RETURNS VOID AS $$
DECLARE
year VARCHAR(4);
sqlStr TEXT;
table_name VARCHAR(100);
is_exists INTEGER;
BEGIN
-- 获取当前年份
year := TO_CHAR(CURRENT_DATE, 'YYYY');
-- 判断是否存在表 chillers_data_min + year
table_name := 'chillers_data_min' || year;
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name;
IF is_exists = 0 THEN
sqlStr := 'CREATE TABLE ' || table_name || ' (
id BIGSERIAL PRIMARY KEY,
device_code VARCHAR(20),
device_num VARCHAR(20),
collection_num VARCHAR(20),
register_address VARCHAR(50),
register_name VARCHAR(50),
fun_code VARCHAR(10),
last_value NUMERIC(24,2),
last_time TIMESTAMP,
cur_value NUMERIC(24,2),
cur_time TIMESTAMP,
ratio INTEGER,
calc_value NUMERIC(24,2),
local_time TIMESTAMP,
grade INTEGER,
ddc_addr VARCHAR(50),
register_id INTEGER
);
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)';
RAISE NOTICE '%', sqlStr;
EXECUTE sqlStr;
END IF;
-- 判断是否存在表 chillers_data_hour + year
table_name := 'chillers_data_hour' || year;
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name;
IF is_exists = 0 THEN
sqlStr := 'CREATE TABLE ' || table_name || ' (
id BIGSERIAL PRIMARY KEY,
device_code VARCHAR(20),
device_num VARCHAR(20),
collection_num VARCHAR(20),
register_address VARCHAR(50),
register_name VARCHAR(50),
fun_code VARCHAR(10),
last_value NUMERIC(24,2),
last_time VARCHAR(13),
cur_value NUMERIC(24,2),
cur_time VARCHAR(13),
ratio INTEGER,
calc_value NUMERIC(24,2),
local_time TIMESTAMP,
grade INTEGER,
ddc_addr VARCHAR(50),
register_id INTEGER
);
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)';
RAISE NOTICE '%', sqlStr;
EXECUTE sqlStr;
END IF;
-- 判断是否存在表 chillers_data_day + year
table_name := 'chillers_data_day' || year;
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name;
IF is_exists = 0 THEN
sqlStr := 'CREATE TABLE ' || table_name || ' (
id BIGSERIAL PRIMARY KEY,
device_code VARCHAR(20),
device_num VARCHAR(20),
collection_num VARCHAR(20),
register_address VARCHAR(50),
register_name VARCHAR(50),
fun_code VARCHAR(10),
last_value NUMERIC(24,2),
last_time VARCHAR(10),
cur_value NUMERIC(24,2),
cur_time VARCHAR(10),
ratio INTEGER,
calc_value NUMERIC(24,2),
local_time TIMESTAMP,
grade INTEGER,
ddc_addr VARCHAR(50),
register_id INTEGER
);
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)';
RAISE NOTICE '%', sqlStr;
EXECUTE sqlStr;
END IF;
-- 判断是否存在表 chillers_data_month
table_name := 'chillers_data_month';
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name;
IF is_exists = 0 THEN
sqlStr := 'CREATE TABLE ' || table_name || ' (
id BIGSERIAL PRIMARY KEY,
device_code VARCHAR(20),
device_num VARCHAR(20),
collection_num VARCHAR(20),
register_address VARCHAR(50),
register_name VARCHAR(50),
fun_code VARCHAR(10),
last_value NUMERIC(24,2),
last_time VARCHAR(10),
cur_value NUMERIC(24,2),
cur_time VARCHAR(10),
ratio INTEGER,
calc_value NUMERIC(24,2),
local_time TIMESTAMP,
grade INTEGER,
ddc_addr VARCHAR(50),
register_id INTEGER
);
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)';
RAISE NOTICE '%', sqlStr;
EXECUTE sqlStr;
END IF;
-- 判断是否存在表 chillers_data_year
table_name := 'chillers_data_year';
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name;
IF is_exists = 0 THEN
sqlStr := 'CREATE TABLE ' || table_name || ' (
id BIGSERIAL PRIMARY KEY,
device_code VARCHAR(20),
device_num VARCHAR(20),
collection_num VARCHAR(20),
register_address VARCHAR(50),
register_name VARCHAR(50),
fun_code VARCHAR(10),
last_value NUMERIC(24,2),
last_time VARCHAR(10),
cur_value NUMERIC(24,2),
cur_time VARCHAR(10),
ratio INTEGER,
calc_value NUMERIC(24,2),
local_time TIMESTAMP,
grade INTEGER,
ddc_addr VARCHAR(50),
register_id INTEGER
);
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)';
RAISE NOTICE '%', sqlStr;
EXECUTE sqlStr;
END IF;
END;
$$ LANGUAGE plpgsql;