Re: How to set parameters in 'options'? - Mailing list pgsql-general

From Adrian Klaver
Subject Re: How to set parameters in 'options'?
Date
Msg-id 884a4b56-9f35-9baf-50f2-7ba9176896a5@aklaver.com
Whole thread Raw
In response to How to set parameters in 'options'?  (Stefan Keller <sfkeller@gmail.com>)
Responses Re: How to set parameters in 'options'?  (Stefan Keller <sfkeller@gmail.com>)
List pgsql-general
On 1/29/19 6:40 AM, Stefan Keller wrote:
> Hi,
> 
> I'd like to write a function like this:
> 
> create function foo(_host text, _port text, _dbname text)
> returns void as $$
>    create server _server
>      foreign data wrapper postgres_fdw
>      options (host _host, port _port, dbname _dbname);
>      -- ERROR: syntax error at or near "_host"
> $$ language sql;
> 
> In order to e.g. do:
> select foo('111.11.11.11', '5432', 'mydb');
> 
> How can I set the parameters in 'options' using those variables?

If you are going to use plpgsql, then format:

https://www.postgresql.org/docs/10/functions-string.html#FUNCTIONS-STRING-FORMAT

https://www.postgresql.org/docs/10/plpgsql-statements.html#PLPGSQL-QUOTE-LITERAL-EXAMPLE

So something like:

execute format('create server _server
     foreign data wrapper postgres_fdw
     options (host $1, port $2, dbname $3') USING _host, _port, _dbname

Not sure where the _server is coming from so that might have to be dealt 
with.

> 
> :Stefan
> 
> P.S. Actually I'll put this code in a plggsql function later on.
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Igor Neyman
Date:
Subject: RE: How to set parameters in 'options'?
Next
From: "Gunnar \"Nick\" Bluth"
Date:
Subject: SELECT of pseudo hex value gives unexpected result