Stored procedures plpgsql存储函数,用于创建具有参数列名的表
我想在plpgsql中创建一个Postgres存储函数,该函数创建一个表,表中指定的列名根据输入参数的不同而变化 基本上是这样的:Stored procedures plpgsql存储函数,用于创建具有参数列名的表,stored-procedures,input,parameters,plpgsql,create-table,Stored Procedures,Input,Parameters,Plpgsql,Create Table,我想在plpgsql中创建一个Postgres存储函数,该函数创建一个表,表中指定的列名根据输入参数的不同而变化 基本上是这样的: CREATE OR REPLACE FUNCTION document_insert_new_document(_name text, _table_name text) RETURNS bigint AS $BODY$ declare _documentid bigint; _user_history_table_name text; _histo
CREATE OR REPLACE FUNCTION document_insert_new_document(_name text, _table_name text)
RETURNS bigint AS
$BODY$
declare
_documentid bigint;
_user_history_table_name text;
_history_table_name_column text;
begin
_documentid = 0;
_user_history_table_name = 'merge_user_history_' || _table_name;
_history_table_name_column = _table_name || '_id';
CREATE TABLE _user_history_table_name
(
user_history_id bigint NOT NULL,
_history_table_name_column bigint NOT NULL,
...
)
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
这可能吗?如果是,怎么做
CREATE OR REPLACE FUNCTION document_insert_new_document(_name text, _table_name text)
RETURNS void AS
$BODY$
declare
_documentid bigint;
_user_history_table_name text;
_history_table_name_column text;
query_create text;
begin
_documentid = 0;
_user_history_table_name = 'merge_user_history_' || _table_name;
_history_table_name_column = _table_name || '_id';
query_create := 'CREATE TABLE ' || _user_history_table_name ||
' (user_history_id bigint NOT NULL,' ||
_history_table_name_column ||
' bigint NOT NULL,
... )
WITH (
OIDS=FALSE
)';
EXECUTE query_create;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
或者,如果您想使用“USING”子句:
[...]
query_create := 'CREATE TABLE ($1) (
user_history_id bigint NOT NULL,
($2) bigint NOT NULL,
... )
WITH (
OIDS=FALSE
)';
EXECUTE query_create USING _user_history_table_name, _history_table_name_column;
[...]
或者,如果您想使用“USING”子句:
[...]
query_create := 'CREATE TABLE ($1) (
user_history_id bigint NOT NULL,
($2) bigint NOT NULL,
... )
WITH (
OIDS=FALSE
)';
EXECUTE query_create USING _user_history_table_name, _history_table_name_column;
[...]
执行“…”使用(参数)函数应该返回什么数据?返回bigint“执行”…'使用(参数)函数应该返回什么数据?“返回bigint”