Postgres SQL儲存函式引數使用說明

2021-08-07 07:43:06 字數 2311 閱讀 8632

在使用postgres資料庫的過程中,遇到了表分割槽的問題。為了建立表分割槽,首先得建立分割槽表。首先想到的是寫個儲存函式,然後定時的建立分割槽表,然後再建立觸發器去操作分割槽表。但是在建立儲存函式時,怎麼把分割槽表的表名當作引數傳進儲存函式,然後在函式內部動態建立表。可是直接使用字串的表名不起作用。經研究,需要使用execute去執行,具體做法為:拼接乙個建立表的sql語句,然後用execute 執行sql語句,這樣建立表就完成了。詳細**如下:

create or replace function "public"."pro_partition_play_recond"(tablename varchar)

returns "pg_catalog"."void" as $body$declare

sqlstring varchar(1024);

start_date varchar default '2017-08-01';

end_date varchar default '2017-09-01';

index_str varchar ;

begin

sqlstring:= 'create table '|| tablename ||'(check(create_date >= ''' || start_date || ''' and create_date < ''' || end_date || ''')) inherits (md_play_recode);';

execute sqlstring;

index_str=tablename || '_create_date';

raise notice 'parameter is: %', index_str ;

sqlstring:='create index '||index_str||' on '|| tablename ||' (create_date);';

execute sqlstring;

end$body$

language 'plpgsql' volatile cost 100

;alter function "public"."pro_partition_play_recond"(tablename varchar) owner to "postgres";

說明:表名引數tablename 在拼接sql語句時,應用用:

'|| tablename ||',需要加引號時用這個

''' || start_date || '''。這是3個單引號。

呼叫如下:

select pro_partition_play_recond('md_play_recode_201708');
效果如下:

**如下:

create or replace function "public"."pro_partition_play_recond"(tablename varchar)

returns "pg_catalog"."void" as $body$declare

sqlstring varchar(1024);

start_date varchar default '2017-08-01';

end_date varchar default '2017-09-01';

index_str varchar ;

begin

sqlstring:= 'create table '|| tablename ||'(check(create_date >= ''' || start_date || ''' and create_date < ''' || end_date || ''')) inherits (md_play_recode);';

execute sqlstring;

index_str=tablename || '_create_date';

raise notice 'parameter is: %', index_str ;

sqlstring:='create index '||index_str||' on '|| tablename ||' (create_date);';

execute sqlstring;

end$body$

language 'plpgsql' volatile cost 100

;

PostgresSql常用一些函式方法

前言 開發小筆記。正文 strops string,substring 及position substring in string 函式類似於sqlserver中的charindex函式,用於獲取一段字串中的某個字元的下標索引,常配合substrin 函式擷取字串使用 round 分子 分母 num...

postgres sql 備份還原

postgresql自帶乙個客戶端pgadmin,裡面有個備份,恢復選項,也能對資料庫進行備份 恢復 還原 但最近發現資料庫慢慢龐大的時候,經常出錯,備份的檔案過程中出錯的機率那是相當大,手動調節灰常有限。所以一直尋找完美的備份恢復方案。用法 備份資料庫 指令如下 pg dump h 164.82....

postgres sql語句總結

建立表 create table tablename field1 integer not null peimary key,int,不為空,主鍵 field2 character varying 10 not null,char,10個位元組,不為空 field3 serial not null,...