创建一个名称传递给变量的架构

问题描述:

我想创建一个名称传递给变量的架构。 例子:创建一个名称传递给变量的架构

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; 
+0

感谢弗兰克它为我工作。 – GVK 2010-03-05 12:25:21

+1

推荐你使用'.. IF NOT EXISTS' – 2016-03-22 17:32:19

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;