programing

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

linuxpc 2023. 5. 11. 21:10
반응형

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

함수를 작성하고 싶습니다.pl/pgsql나는 Postgres Enterprise Manager v3를 사용하고 셸을 사용하여 함수를 만들고 있지만 셸에서는 반환 유형을 정의해야 합니다.반환 유형을 정의하지 않으면 함수를 만들 수 없습니다.

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

사용하다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;

PostgreSQL 11+:PROCEDUREs

PostgreSQL 11은 기본적으로 아무것도 반환하지 않지만 다음과 같이 호출되는 함수를 소개합니다.CALL보다는SELECT,

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

이것처럼.

=# CREATE PROCEDURE create_table_foo()
AS $$
  CREATE TABLE foo ( id int )
$$ LANGUAGE sql;

=# CALL create_table_foo();


=# \d foo;
                Table "public.foo"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 id     | integer |           |          | 

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

do $$

그리고 다음과 같은 정상적인 기능으로 시작합니다.

declare
...

그래도 기능을 수행하려면 반환 에 void를 추가하면 됩니다.

오류가 표시되는 경우 승인된 답변에 추가query has no destination for result data당신의 기능을 호출할 때, 당신은 아마도 사용하고 있을 것입니다.SELECT당신의 기능 중 하나가 당신의 진술입니다.교체합니다.SELECT와 함께PERFORM그리고 나서 정상적으로 당신의 기능을 호출합니다.SELECT yourFunction().

참고:PERFORMpl/pgsql 컨텍스트에서만 사용할 수 있습니다.링크 참조

언급URL : https://stackoverflow.com/questions/14216716/how-to-create-function-that-returns-nothing

반응형