2016-09-06 7 views
3

私は整数を返す関数func1()を持っています。plpgsql関数は別の関数値を返します

は、func1()の返品を返すか、さらにいくつかのことを行うことができます。 func1()の戻り値の型はINTEGERです。このような

何か:

CREATE OR REPLACE FUNCTION func2(mode integer) 
    RETURNS integer AS 
$$ 
begin 
    if mode=1 then 
     return func1(); -- NOT plpgsql syntax 
    end if; 

    more stuff ..... 

    return 2; 
end 
$$ 
LANGUAGE plpgsql VOLATILE 

私の質問はどのようreturn func1();を行うことですか?

私は私が行うことができます知っている:

select func1() into temp; 
return temp; 

が、それを行うにはより多くのelegent方法がある場合、私はwondringました。

+2

'リターン関数func1()は、'私の作品:のhttp:/ /sqlfiddle.com/#!15/18442/1エラーは何ですか? –

答えて

1

これらの作業のすべて:

オプション1:

CREATE OR REPLACE FUNCTION func2(mode integer) 
    RETURNS integer AS 
$BODY$ 
DECLARE 
    _result integer; 
BEGIN 
    _result = 2; 
    IF mode=1 THEN 
     _result = func1(); 
    END IF; 

    --more stuff ..... 

    RETURN _result; 
END 
$BODY$ 
    LANGUAGE plpgsql VOLATILE COST 100; 

オプション2:

CREATE OR REPLACE FUNCTION func2(mode integer) 
    RETURNS integer AS 
$BODY$ 
BEGIN 
    IF mode=1 THEN 
     RETURN func1(); 
    END IF; 

    --more stuff ..... 

    RETURN 2; 
END 
$BODY$ 
    LANGUAGE plpgsql VOLATILE COST 100; 
+0

代入演算子として ':='を使用することは、単純な '= 'よりも優先されます。 –

+0

@a_horse_with_no_nameなぜそうですか? – ban

+0

私はパスカル記法が好きではありませんでした。ちょうど個人的な好み:) –

関連する問題