> 데이터 베이스 > MySQL 튜토리얼 > 여러 행이 있는 가상 테이블을 반환하는 Postgres 함수를 만드는 방법은 무엇입니까?

여러 행이 있는 가상 테이블을 반환하는 Postgres 함수를 만드는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-23 02:15:13
원래의
281명이 탐색했습니다.

How to Create a Postgres Function Returning a Virtual Table with Multiple Rows?

Postgres 함수에서 가상 테이블 반환

문제

알 수 없는 사용자 정의 콘텐츠가 포함된 가상 테이블을 반환하는 Postgres 함수를 찾고 있습니다. 행 수와 열 3개. 적절한 구문을 찾는 데 어려움이 있으며 함수를 작성하는 데 도움이 필요합니다.

해결책

다음 구문을 활용하여 원하는 함수를 구성하세요.

CREATE OR REPLACE FUNCTION f_foo() -- (open_id numeric) -- parameter not used
  RETURNS TABLE (a int, b int, c int) AS
$func$
BEGIN
RETURN QUERY VALUES
  (1,2,3)
, (3,4,5)
, (3,4,5)
;
END
$func$  LANGUAGE plpgsql IMMUTABLE ROWS 3;
로그인 후 복사

설명

열쇠 포인트:

  • RETURN TABLE: 반환 유형을 임시 행 유형으로 정의합니다.
  • RETURN QUERY: 단일 행으로 여러 행을 반환합니다. 명령.
  • VALUES: 표준 SQL 표현식을 사용하여 여러 행을 수동으로 입력합니다.
  • PARAMETERS: 사용되지 않는 매개변수(open_id 숫자)는 다음과 같이 포함됩니다. 예이지만 선택 사항입니다.
  • IDENTIFIERS: 법적 식별자에는 큰따옴표가 필요하지 않습니다.
  • VOLATILITY: IMMUTABLE은 결과가 일정함을 나타냅니다.
  • ROWS: 반환 개수 선언 행(ROWS 3)은 쿼리 플래너에 도움이 될 수 있습니다.

대안:

  • 간단한 SQL: 간단한 경우에는 다음 SQL 문 충분:
VALUES (1,2,3), (3,4,5), (3,4,5)
로그인 후 복사
  • SQL 함수: 명령문을 SQL 함수로 래핑:
CREATE OR REPLACE FUNCTION f_foo()
   RETURNS TABLE (a int, b int, c int) AS
$func$
   VALUES (1, 2, 3)
        , (3, 4, 5)
        , (3, 4, 5);
$func$  LANGUAGE sql IMMUTABLE ROWS 3;
로그인 후 복사

위 내용은 여러 행이 있는 가상 테이블을 반환하는 Postgres 함수를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿