| From: | Godshall Michael <Michael_Godshall(at)gmachs(dot)com> | 
|---|---|
| To: | "'pgsql-novice(at)postgresql(dot)org'" <pgsql-novice(at)postgresql(dot)org> | 
| Subject: | Possible to create table name with a variable? Temp tables? | 
| Date: | 2003-08-22 23:01:47 | 
| Message-ID: | A596FA3368757645AF862C701495CA0001B44470@hor1mspmx01.gmachs.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-novice | 
Hi,
 
I use pgadminII and if I create a temporary table in a function, call that
function more than once in a pgadminII session I always get an error message
saying the temp table does not exist the second time I execute the function.
If I close out of pgadminII, re-open it, execute the function again it
works. 
 
My function using a temporary table is like this:
 
CREATE function delete_me() RETURNS text AS '
 
DECLARE
BEGIN
IF ((select count(relname) from pg_class where relname =
''temp_merged_results'') = 1) THEN
drop table temp_merged_results;
END IF;
 
IF ((select count(relname) from pg_class where relname =
''temp_merged_results'') = 0) THEN
   CREATE TABLE temp_merged_results (column_name varchar(50));
END IF;
 
insert into temp_merged_results
select some_column_name
from a_different_table;
return ''test'';
END;
'  LANGUAGE 'plpgsql' STABLE;
 
 
I was thinking maybe this would be a work around.
 
Is it possible to create a table getting its name from a variable populated
in a function in psql?
 
Something like this:
 
CREATE FUNCTION me() RETURNS text AS 
DECLARE
counter bigint;
random_table_name text;
BEGIN
counter := 0;
counter := (SELECT nextval(''my_sequence_function_counter''));
random_table_name := (SELECT CAST(counter as text));
random_table_name := ''some_table_name'' || random_table_name;
    IF ((select count(relname) from pg_class where relname =
random_table_name) = 1) THEN
drop table random_table_name;
END IF;
   IF ((select count(relname) from pg_class where relname =
random_table_name) = 0) THEN
CREATE TABLE random_table_name ( some_column varchar(50) );
END IF;
return random_table_name;
END;
' LANGUAGE 'plpgsql' STABLE;
 
 
Mike
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Stephan Szabo | 2003-08-22 23:13:30 | Re: Possible to create table name with a variable? Temp | 
| Previous Message | Luis Hernán Otegui | 2003-08-22 17:42:02 | Clusters and pgsql |