아무것도 반환하지 않는 함수를 만드는 방법


108

나는 함수를 작성하고 싶다 pl/pgsql. 내가 사용하고 PostgresEnterprise 관리자 V3를 하고 기능을하는 쉘을 사용하지만, 쉘에서 나는 반환 형식을 정의해야합니다. 반환 유형을 정의하지 않으면 함수를 만들 수 없습니다.

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

답변:


167

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;

18
다른 독자의 경우 #variable_conflict지침이 나머지 답변과 관련없음 을 유의하십시오 . 예제 함수의 일부일뿐입니다. 유일한 중요한 부분은 RETURNS void. 또한 멋지다. PL / PgSQL에 pragma가 있다는 것을 몰랐습니다.
Craig Ringer 2013 년

다음을 사용하는 관련 사례가 있습니다 #variable_conflict. dba.stackexchange.com/a/105828/3684
Erwin Brandstetter 2015-07-03

1
다른 기능 내에서이 기능을 어떻게 사용합니까? 없이 시도하면 SELECT * FROM stamp_user(...)얻을 수 error: query has no destination for result data있고 쓰기 만하면 stamp_user(...)얻을 수 syntax error있습니다.
pir

0

다음과 같은 절차를 사용할 수 있지만 함수는 항상 무언가를 반환해야합니다.

do $$

다음과 같은 정상적인 기능으로 시작하십시오.

declare
...

그러나 여전히 함수를 수행하려면 returns 뒤에 void 를 추가하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.