Sql 将执行字符串的结果存储到临时表中

Sql 将执行字符串的结果存储到临时表中,sql,postgresql,stored-procedures,plpgsql,create-table,Sql,Postgresql,Stored Procedures,Plpgsql,Create Table,在一个函数中,我创建了一个字符串,其中包含一个Select查询作为 SQLSTR:='select col1,col2 from '||_param1||'_'||_param2||' where col1 like ''%'||_pram3; 我想要的是在运行executesqlstr之后,将SQLSTR的结果作为FilterTable存储到临时表中命令。为什么不直接使用CTAS语法 SQLSTR := 'create temp table FilterTable as selec

在一个函数中,我创建了一个字符串,其中包含一个Select查询作为

SQLSTR:='select col1,col2 from '||_param1||'_'||_param2||' where col1 like ''%'||_pram3;

我想要的是在运行
executesqlstr之后,将
SQLSTR的结果作为
FilterTable
存储到临时表中命令。

为什么不直接使用CTAS语法

SQLSTR := 
    'create temp table FilterTable as select col1,col2 from '
        || quote_ident(_param1 || '_' || _param2) 
        ||' where col1 like ''%' || _param3 || '''';

请注意,我还在语句末尾添加了一个缺少的结束引号,并使用
quote_ident()
作为表名,以防它包含特殊字符。

为什么不使用CTAS语法呢

SQLSTR := 
    'create temp table FilterTable as select col1,col2 from '
        || quote_ident(_param1 || '_' || _param2) 
        ||' where col1 like ''%' || _param3 || '''';

请注意,我还在语句末尾添加了一个缺少的结束引号,并使用
quote_ident()
作为表名,以防它包含特殊字符。

我是否能够在函数中进一步使用该表来查询存在变量的查询,如
SQLSTR
?@jaymeta:yes。临时表将一直保留到创建它的数据库会话结束。我是否能够在函数中进一步使用该表来查询存在变量的查询,如
SQLSTR
?@jaymeta:yes。临时表一直存在,直到创建它的数据库会话结束。