2016-09-06 3 views
3

정수를 반환하는 func1() 함수가 있습니다.plpgsql 함수가 다른 함수 값을 반환합니다.

func2(mode integer)을 작성하여 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

나는 파스칼 표기법을 결코 좋아하지 않았다. 그냥 개인적인 취향 :) –

관련 문제