2013-01-08 2 views
54

pl/pgsql 함수를 작성하고 싶습니다. PostgresEnterpreis Manager v3을 사용하고 있고 쉘을 사용하여 함수를 만들었지 만 쉘에서는 리턴 타입을 정의해야합니다. 반환 형식을 정의하지 않으면 함수를 만들 수 없습니다.아무 것도 반환하지 않는 함수를 만드는 방법

어떻게 결과를 반환하지 않고 함수를 만들 수 있습니까? 즉, 새 테이블을 만드는 함수가 있습니까?

답변

87

를 사용하여 아래와 같이 RETURNS void : 다른 독자들에 대한

CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$ 
    #variable_conflict use_variable 
    DECLARE 
     curtime timestamp := now(); 
    BEGIN 
     UPDATE users SET last_modified = curtime, comment = comment 
      WHERE users.id = id; 
    END; 
$$ LANGUAGE plpgsql; 
+10

는'#의 variable_conflict' 지시어는 대답의 나머지 부분과는 * 아무것도 *이 없습니다 있습니다. 이것은 예제 함수의 일부일뿐입니다. 유일하게 중요한 비트는'RETURNS void '입니다. 또한, 멋지다, 나는 PL/PgSQL에 pragma가 있다는 것을 몰랐다. –

+0

다음은'# variable_conflict'를 사용한 관련 사례입니다 : http://dba.stackexchange.com/a/105828/3684 –

관련 문제