参数默认值

最近更新时间: 2025-02-18 16:02:00

  • 复制
    复制成功
postgres=# CREATE OR REPLACE PROCEDURE p_default_value (a_int INTEGER DEFAULT 1) AS
$$
BEGIN
    RAISE NOTICE 'a_int = %',a_int;
END;
$$
LANGUAGE PLPGSQL;
CREATE PROCEDURE
postgres=# CALL p_default_value(2);
NOTICE:  a_int = 2
CALL
postgres=# CALL p_default_value(); 
NOTICE:  a_int = 1
CALL
postgres=#
#备注:如果原来存在一个p_default_value ()这样的存储过程,则上面的执行就会出错,因为系统无法清楚到你到底要执行那个函数,如下所示
postgres=# CREATE OR REPLACE PROCEDURE p_default_value() AS
$$
BEGIN
    RAISE NOTICE '无参数';
END;
$$
LANGUAGE plpgsql ;
CREATE PROCEDURE
postgres=# CALL p_default_value();
ERROR:  procedure p_default_value() is not unique
LINE 1: CALL p_default_value();
             ^
HINT:  Could not choose a best candidate procedure. You might need to add explicit type casts.
postgres=#

出错提示,p_default_value ()存储过程不是唯一的,这是使用上一个需要特别注意的地方。