在Postgres 8.2中执行动态SQL

时间:2015-03-30 09:00:11

标签: postgresql

我正在尝试使用动态SQL在函数内创建一个表,并立即将其复制到另一个表中。

execute 'create table week_temp as 
    select w.*, ww.*
    from employer_weekly w
    left join employer_weekly_' || $1 || '_2 ww
        on w.w_employer::int = ww.emp_' || $1 || '::int';

drop table if exists employer_weekly;
create table employer_weekly as select * from week_temp;

我收到以下错误:

  

错误:错误:与OID 9288742的关系不存在

     

CONTEXT:SQL语句“create table employer_weekly as select * from   week_temp“

手动检查,我可以看到week_temp并且可以正确访问它。

欣赏任何线索!

1 个答案:

答案 0 :(得分:0)

@a_horse_with_no_name说什么。

但是 - 您遇到的问题是正在编译函数中的非动态语句。这意味着" FROM week_temp"正在查看不再存在的旧版本的week_temp。使该语句也成为动态SQL,它应该可以工作。