我正在尝试删除表,如果存在,则使用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;
答案 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?