如果存在,则删除表,否则使用PostgreSQL继续函数中的下一步
我正在尝试删除表,如果存在,请使用PostgreSQL 9.3版本继续函数中的下一步 示例:如果存在,则删除表,否则使用PostgreSQL继续函数中的下一步,postgresql,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
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;
试用
您需要使用
execute
(正如@FuzzyTree在我前面已经指出的那样)运行下面的DROP TABLE
命令
(或)
另外,非易失性函数中不允许使用另一个指针DROP TABLE。因此,您可能必须将函数的最后一行更改为
LANGUAGE 'plpgsql' VOLATILE;
查看此帖子,会让你有更好的想法。但不继续下一步,只给出通知,说明该表不存在。不!我使用它就像“如果存在,则删除表”。@Meem,您将不得不使用
if。。ELSE
构造以有条件地执行删除操作。检查我在回答中提到的链接。这会让你得到你想要做的。做了同样的改变。但仅获取表不存在的通知不会继续下一个过程。@Meem下一个过程可能会出现此问题,因为IF exists
应该在表不存在时显示通知,因此查看通知没有什么错是!我得到了它。非常感谢。drop table是否在您的功能中起作用?
execute 'drop table ' || var1;
execute 'DROP VIEW ' || var1;
LANGUAGE 'plpgsql' VOLATILE;