Drop table如果存在,则使用PostgreSQL继续执行函数的下一步

时间:2014-06-14 07:37:17

标签: postgresql

我正在尝试删除表,如果存在,则使用PostgreSQL 9.3版本继续执行下一步功能。

示例

  Create or replace function test(tablename varchar)
  returns setof record as
  $$
  Declare
        var1 varchar :='table_';
  Begin
        var1 :=var1 ||tablename;
        /* Here need to drop table if exists */
       drop table if exist var1;

       /* else proceed for next step */
       ....
       ....
   end;
   $$
   language plpgsql;

2 个答案:

答案 0 :(得分:2)

尝试使用EXECUTE

EXECUTE 'DROP TABLE IF EXISTS ' || var1;

答案 1 :(得分:1)

您需要使用DROP TABLE运行execute命令,如下所示(正如@FuzzyTree已经在我之前指出的那样)

execute 'drop table ' || var1;

(OR)

execute 'DROP VIEW ' || var1;

另一个指针,DROP TABLE不允许在非易失性函数中使用。因此,您可能需要将函数的最后一行更改为

LANGUAGE 'plpgsql' VOLATILE;

查看此帖子,会让您更好地了解How to delete table *or* view from PostgreSQL database?