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

时间:2015-12-14 09:25:14

标签: postgresql postgresql-9.3

我有以下功能,其中包含6个参数。

在这里,我想将默认值null设置为参数colacolccolf

功能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;

但是收到错误。

错误:带有默认值的输入参数必须也有默认值

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这应该有效:

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

  

如果参数不是,则用作默认值的表达式   指定。表达式必须对参数类型具有可强制性   参数。只有输入(包括INOUT)参数才能有   默认值。参数后面的所有输入参数都带有   默认值也必须具有默认值。