Thread: Table name as a variable in SELECT query

Table name as a variable in SELECT query

From
"Andrey Fokin"
Date:
Hi,
please advise is possible in SELECT query use variable as a table name?

I would like to have  for example something like:

CREATE OR REPLACE FUNCTION test_name (tb varchar) RETURNS int AS  $$

DECLARE
                ......

BEGIN    SELECT * FROM $1;    ........

Will be grateful for any idea about.


Best regards           Andrey


Re: Table name as a variable in SELECT query

From
Andreas Kretschmer
Date:
Andrey Fokin <affox@myway.com> wrote:

> Hi,
> please advise is possible in SELECT query use variable as a table name?
> 
> I would like to have  for example something like:
> 
> CREATE OR REPLACE FUNCTION test_name (tb varchar) RETURNS int AS  $$
> 
> DECLARE 
> 
>                  ......
> 
> BEGIN
>         SELECT * FROM $1;
>         ........
> 
> Will be grateful for any idea about.

Yes, it is possible, with dynamic sql. You have to build a string that
contains your query, and then execute (it's a command in pl/pgsql) that
string. Read more:

http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN


Andreas
-- 
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect.                              (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly."   (unknown)
Kaufbach, Saxony, Germany, Europe.              N 51.05082°, E 13.56889°