Quantcast
Channel: Jimmy He – OracleBlog
Viewing all articles
Browse latest Browse all 130

pg中drop function报错不存在

$
0
0

在pg中drop function会报错不存在,或者报错语法错误:

mydb01=>drop function getcpumem;
ERROR:Syntax error ator near";"
LINE 1: drop function getcpumem;

mydb01=>drop function getcpumem(integer,integer,integer,integer);
ERROR:function getcpumem(integer,integer,integer,integer) does not exist
mydb01=>

在这里需要注意一下,drop function的时候,需要带上function中定义的各个变量的类型。语法是:
DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
[ CASCADE | RESTRICT ]

在pg中,我们可以通过pg_proc看有哪些funcition,但是pg_proc中的变量类型,虽然在proargtypes中有记录,但是它是一个数字编码,需要通过::regtype[]来转换一下成可识别的类型。
所以,你要先找出这个function的各个变量的类型,可以用下面的语句查找:

SELECT proname, proargtypes::regtype[], nspname
FROM pg_proc
JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
WHERE proname = 'getcpumem';

此时运行

drop function getcpumem(integer,numeric,numeric,varchar,integer,numeric,numeric);

就可以正常删除了。


Viewing all articles
Browse latest Browse all 130

Trending Articles


FORECLOSURE OF REAL ESTATE MORTGAGE


HOY PANGIT, MAGBAYAD KA!


Shrek para colorear


Sapos para colorear


Love Quotes Tagalog


Long Distance Relationship Tagalog Love Quotes


“BAHAY KUBO HUGOT”


RE: Mutton Pies (frankie241)


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.