Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果存在,则删除表,否则使用PostgreSQL继续函数中的下一步_Postgresql - Fatal编程技术网

如果存在,则删除表,否则使用PostgreSQL继续函数中的下一步

如果存在,则删除表,否则使用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

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


您需要使用
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;