집 >데이터 베이스 >MySQL 튜토리얼 >PL/pgSQL을 사용하여 여러 PostgreSQL 테이블에서 레코드 필드를 검색하고 결합하는 방법은 무엇입니까?
PL/pgSQL에서 서로 다른 테이블의 여러 필드를 단일 레코드로 반환하려면 다음을 사용하여 사용자 정의 레코드를 구성해야 합니다. 원하는 필드 구성. 이를 달성하는 방법은 다음과 같습니다.
CREATE TYPE 문을 사용하여 필드와 해당 데이터 유형을 지정하여 레코드 유형을 정의합니다.
CREATE TYPE my_record_type AS ( field1 text, field2 integer, field3 boolean );
SP에서는 DECLARE 문을 사용하여 레코드 종류의 변수를 선언하고 필드 채우기:
DECLARE result my_record_type; BEGIN SELECT field1, field2, field3 INTO result FROM table1; -- Retrieve and populate additional fields from other tables RETURN result; END
테이블에서 여러 행을 검색하여 단일 레코드로 집계하려면 하위 쿼리 사용을 고려하세요. 예를 들어, 사용자 테이블에서 행을 검색하고 평면화하려면:
DECLARE result my_record_type; BEGIN SELECT id, name FROM ( SELECT id, name FROM user WHERE school_id = InputSchoolId LIMIT 2 ) AS subquery INTO result; RETURN result; END
함수를 정의한 후 함수를 호출하여 레코드를 검색하세요.
SELECT get_object_fields('name') AS record_output;
결과는 지정된 필드를 포함하는 레코드가 됩니다.
다형성 결과에 CREATE TYPE을 사용하는 것은 권장되지 않지만 유연성을 위해 RECORD 유형을 활용할 수 있습니다. 예:
CREATE FUNCTION test_ret(a text, b text) RETURNS RECORD AS $$ DECLARE result RECORD; BEGIN IF LENGTH(a) < LENGTH(b) THEN result = (TRUE, (a || b)::text, 'a shorter than b'::text); ELSE result = (FALSE, (b || a)::text, NULL::text); END IF; RETURN result; END;$$ LANGUAGE plpgsql;
이를 통해 다양한 수의 열이 포함된 레코드를 반환할 수 있습니다.
위 내용은 PL/pgSQL을 사용하여 여러 PostgreSQL 테이블에서 레코드 필드를 검색하고 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!