创建一个名称传递给变量的架构
问题描述:
我想创建一个名称传递给变量的架构。 例子:创建一个名称传递给变量的架构
CREATE OR REPLACE FUNCTION test1("name" character varying)
RETURNS void AS
'CREATE SCHEMA "name";'
LANGUAGE 'sql' VOLATILE
COST 100;
答
你可以使用PLPGSQL比EXECUTE:
CREATE OR REPLACE FUNCTION test1("name" character varying)
RETURNS void AS
$$
BEGIN
EXECUTE 'CREATE SCHEMA '|| quote_ident($1); -- security
RETURN;
END;
$$
LANGUAGE plpgsql
VOLATILE
COST 20;
答
SEARCH_PATH用户更改默认的模式,所以你可以很容易地将表添加到它! 并使用格式与%I转义模式名称作为标识符。
这样的:
CREATE OR REPLACE FUNCTION test1("name" character varying)
RETURNS void AS
$$
BEGIN
EXECUTE FORMAT('CREATE SCHEMA %I;', $1);
EXECUTE FORMAT('SET search_path TO %I;', $1);
CREATE TABLE table1(
column1 integer
);
RETURN;
END;
$$
LANGUAGE plpgsql
VOLATILE
COST 20;
感谢弗兰克它为我工作。 – GVK 2010-03-05 12:25:21
推荐你使用'.. IF NOT EXISTS' – 2016-03-22 17:32:19