2015-12-14 56 views
1

我有以下功能,其中包含6個參數。PostgreSQL 9.3:設置參數值默認爲空

在這裏我要爲默認值設置爲空的參數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; 

但得到一個錯誤。

錯誤:一個默認值後輸入參數也必須有默認

+0

有什麼不清楚的錯誤信息? –

+0

@a_horse_with_no_name,根據錯誤我需要設置一些值給其他參數。如何將'default not null'設置爲其他參數? – MAK

+0

您需要爲每個參數在默認值後面定義第一個參數的默認值(在您的情況下爲'cold'和'cole')。參數 –

回答

2

你必須重新排序參數!只需在最後放置默認值。

+0

沒有「非空」約束非常感謝。 – MAK

+0

接受這個答案只是表達你的感受:)。 – Daniel

+1

是啊!但根據我的觀點,我需要等待一段時間。 – MAK

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)參數可以具有默認值 。所有輸入參數跟在參數 的默認值之後也必須具有默認值。