参数数据类型 call fany(ARRAY['teledbpg','pgxz']::TEXT[]); ERROR: procedure fany(text[]) is not unique LINE 1: call fany(ARRAY['teledbpg','pgxz']::TEXT[]); ^ HINT: Could not choose a best candidate procedure. You might need to add explicit type casts. teledb 注意 Anyelement 参数如果写成数组,其意义就跟 anyarray 参数一致,所以 fany(aarg anyelement) 与 fany(aarg anyarray) 在调用 fany(ARRAY[1,2]) 时就会出现函数不是唯一化的错误 (ERROR: function fany(…) is not unique) 提示。 参数默认值 teledb CREATE OR REPLACE PROCEDURE pdefaultvalue (aint INTEGER DEFAULT 1) AS $$ BEGIN RAISE NOTICE 'aint %',aint; END; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb CALL pdefaultvalue(2); NOTICE: aint 2 CALL teledb CALL pdefaultvalue(); NOTICE: aint 1 CALL teledb 如果原来存在一个pdefaultvalue () 这样的存储过程,则上面的执行就会出错,因为系统无法清楚到底要执行哪个函数,如下所示。 teledb CREATE OR REPLACE PROCEDURE pdefaultvalue() AS $$ BEGIN RAISE NOTICE '无参数'; END; $$ LANGUAGE plpgsql ; CREATE PROCEDURE teledb CALL pdefaultvalue(); ERROR: procedure pdefaultvalue() is not unique LINE 1: CALL pdefaultvalue(); ^ HINT: Could not choose a best candidate procedure. You might need to add explicit type casts. teledb 出错提示,pdefaultvalue () 存储过程不是唯一的,这是使用上一个需要特别注意的地方。