【问题标题】:PostgreSQL: How to DROP FUNCTION IF EXISTS without specifying parameters?PostgreSQL:如何在不指定参数的情况下 DROP FUNCTION IF EXISTS?
【发布时间】:2015-08-27 06:35:25
【问题描述】:

我可以成功创建一个函数如下:

CREATE FUNCTION Foo(MY_Value INT) RETURNS INT
AS 'SELECT 2 + MY_Value'
LANGUAGE SQL

但是,如果我首先要检查函数是否存在,如果存在则删除它,我必须指定以下内容:

DROP FUNCTION IF EXISTS Foo(My_Value INT);

不指定输入参数,以下返回错误提示“NOTICE: function foo() does not exist, skipping”

DROP FUNCTION IF EXISTS Foo();

与 MySQL 类似,有没有一种方法可以在 PostgreSQL 中删除 FUNCTION 而无需指定函数的参数?换句话说,MySQL语句中是否有以下等效语句(即删除存储过程而不指定输入参数)?

DROP PROCEDURE IF EXISTS Foo;

【问题讨论】:

    标签: postgresql plpgsql


    【解决方案1】:

    从 Postgres 10 开始,您可以仅按名称删除函数,只要名称对其架构是唯一的。

    例子:

    drop function if exists Foo;
    

    文档here

    【讨论】:

      【解决方案2】:

      在 Postgres 函数can be overloaded 中,因此需要参数来区分重载函数。要明确识别一个函数,您可以只输入其参数的类型。

      DROP FUNCTION IF EXISTS Foo(INT);
      

      【讨论】:

        猜你喜欢
        • 2010-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2017-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多