> 데이터 베이스 > MySQL 튜토리얼 > PL/pgSQL을 사용하여 PostgreSQL에서 여러 필드를 단일 레코드로 반환하는 방법은 무엇입니까?

PL/pgSQL을 사용하여 PostgreSQL에서 여러 필드를 단일 레코드로 반환하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-04 05:54:37
원래의
719명이 탐색했습니다.

How to Return Multiple Fields as a Single Record in PostgreSQL using PL/pgSQL?

PL/pgSQL을 사용하여 PostgreSQL에서 여러 필드를 레코드로 반환

PL/pgSQL에서 서로 다른 필드에서 여러 필드를 반환하는 함수 생성 RECORD 유형을 통해 테이블을 단일 레코드로 만들 수 있습니다. 방법은 다음과 같습니다.

RECORD 유형

반환하려는 필드를 정의하는 RECORD 유형을 선언합니다. 예:

CREATE TYPE person AS (
  name text,
  age integer,
  city text
);
로그인 후 복사

다른 테이블 쿼리

PL/pgSQL 함수에서 쿼리를 사용하여 다른 테이블에서 필드를 검색합니다. 예를 들어 테이블 사용자, 주소 및 도시가 있는 경우 다음과 같이 작성할 수 있습니다.

SELECT u.name, u.age, a.city
FROM users AS u
JOIN addresses AS a ON u.address_id = a.id
WHERE u.user_id = @user_id;
로그인 후 복사

쿼리 결과 저장

쿼리 결과를 레코드 변수에 저장 . RECORD 유형을 사용하면 열 이름으로 필드에 액세스할 수 있습니다:

DECLARE result person;
SELECT u.name, u.age, a.city INTO result;
로그인 후 복사

레코드 반환

마지막으로 결과 레코드 반환:

RETURN result;
로그인 후 복사

부정기 취급 결과

다른 테이블에서 일관되지 않은 수의 행을 검색할 수 있는 경우 coalesce() 함수를 사용하여 대체 값을 제공하세요.

SELECT
  coalesce(u.name, 'Unknown'),
  coalesce(u.age, 0),
  coalesce(a.city, 'N/A')
INTO result;
로그인 후 복사

하위 쿼리의 예

반환해야 하는 데이터가 단일 테이블에 별도의 행으로 저장되어 있는 경우 하위 쿼리:

CREATE FUNCTION get_two_users_from_school(schoolid int)
  RETURNS my_type AS $$
DECLARE
  result my_type;
BEGIN
  -- Select first two users from school
  SELECT id, name
  FROM user
  WHERE school_id = schoolid
  ORDER BY id
  LIMIT 2
  INTO result;
RETURN result;
END
$$ language plpgsql;
로그인 후 복사

이 접근 방식을 사용하면 행을 단일 레코드 구조로 "평면화"할 수 있습니다.

위 내용은 PL/pgSQL을 사용하여 PostgreSQL에서 여러 필드를 단일 레코드로 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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