2015-06-11 69 views
15

我可以成功地創建一個功能如下:PostgreSQL:如何在不指定參數的情況下刪除功能?

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

但是,如果我首先要檢查,如果函數存在,然後,如果我不放棄它,我必須指定以下內容:

DROP FUNCTION IF EXISTS Foo(My_Value INT); 

沒有指定輸入參數,下面將返回一個錯誤消息:「注意:函數foo()不存在時,跳過」

DROP FUNCTION IF EXISTS Foo(); 

與MySQL類似,有沒有辦法在PostgreSQL中刪除一個FUNCTION而不必爲函數指定參數?換句話說,在MySQL語句中是否存在以下等價物(即,在不指定輸入參數的情況下刪除存儲過程)?

DROP PROCEDURE IF EXISTS Foo; 

回答

35

在Postgres函數can be overloaded中,所以需要參數來區分重載函數。爲了明確識別一個函數,你可以只放入其參數的類型。

DROP FUNCTION IF EXISTS Foo(INT); 
1

從Postgres 10開始,只要名稱對於其模式是唯一的,就可以按名稱刪除函數。

實施例:

drop function if exists Foo; 

文檔here

相關問題