2016-04-09 32 views
0

içinde bir dize sabit yerine bir işlev parametresi kullanarak Bir işlev aracılığıyla FDW kullanarak yabancı bir sunucu oluşturmak için aşağıdaki işlevi kullanmaya çalışıyorum. Ancak, anasayfası ana dizesi $ 1 işlev değişkeni ile değiştirdiğimde bir sözdizimi hatası alıyorum. Burada bir şey eksik miyim?PostgreSQL

CREATE OR REPLACE FUNCTION foreign_server_create(host_name text) RETURNS VOID 
AS $$ 
    CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host $1, dbname 'xx', port 'xxxx'); 
$$ LANGUAGE sql; 
+0

Bir dinamik ifadesi oluşturmak ve bunu yürütmek gerekiyor. –

+0

teşekkürler, çözümü vereceğim. –

cevap

0
CREATE OR REPLACE FUNCTION foreign_server_create(host_name text) RETURNS VOID 
AS $$ 
EXECUTE format ('CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host %L, dbname 'xx', port 'xxxx')', $1); 
$$ LANGUAGE plpgsql;