PostgreSQL 9.3:设置参数值默认为空

PostgreSQL 9.3: Setting parameters values default to null

我有以下包含 6 个参数的函数。

这里我想给参数cola,colccolf.

设置默认值null

函数fun_Test

create or replace function fun_Test
(
    cola int default null,
    colb varchar(10),
    colc int default null,
    cold varchar(10),
    cole varchar(10),
    colf varchar(50) default null
)

returns void AS

$$
begin
    raise info '%',cola;
    raise info '%',colb;
    raise info '%',colc;
    raise info '%',cold;
    raise info '%',cole;
    raise info '%',colf;
end;
$$
language plpgsql;

但是出现错误。

ERROR:输入参数后一个有默认值的也必须有defaults

您必须重新排序您的参数!只需将默认值放在最后即可。

这应该有效:

CREATE OR replace FUNCTION 
fun_Test (
     colb VARCHAR(10)
    ,cold VARCHAR(10)
    ,cole VARCHAR(10)
    ,colf VARCHAR(50) = NULL
    ,colc INT = NULL
    ,cola INT = NULL
    )

根据CREATE FUNCTION

default_expr

An expression to be used as default value if the parameter is not specified. The expression has to be coercible to the argument type of the parameter. Only input (including INOUT) parameters can have a default value. All input parameters following a parameter with a default value must have default values as well.