42.1. 개요

PL/pgSQL은(는) 로드 가능한 절차적 언어입니다.PostgreSQL데이터베이스 시스템. 디자인 목표PL/pgSQL로드 가능한 절차적 언어를 만드는 것이었습니다.

  • 함수, 프로시저 및 트리거를 생성하는 데 사용할 수 토토.

  • 제어 구조를 다음에 추가합니다SQL언어,

  • 복잡한 계산을 수행할 수 토토.

  • 모든 사용자 정의 유형, 함수, 프로시저 및 연산자를 상속합니다.

  • 서버에서 신뢰하도록 정의할 수 토토.

  • 사용하기 쉽습니다.

다음으로 생성된 함수PL/pgSQL내장 함수를 사용할 수 있는 곳이면 어디든 사용할 수 토토. 예를 들어 복잡한 조건부 계산 함수를 만들고 나중에 이를 사용하여 연산자를 정의하거나 인덱스 표현식에 사용할 수 토토.

포스트그레SQL9.0 이상,PL/pgSQL은 기본적으로 설치됩니다. 그러나 여전히 로드 가능한 모듈이므로 특히 보안에 민감한 관리자는 이를 제거하도록 선택할 수 토토.

42.1.1. 사용의 장점PL/pgSQL

SQL언어입니다포스트그레SQL및 대부분의 다른 관계형 데이터베이스는 쿼리 언어로 사용됩니다. 휴대가 가능하고 배우기 쉽습니다. 하지만 매SQL문은 데이터베이스 서버에 의해 개별적으로 실행되어야 합니다.

즉, 클라이언트 응용 프로그램은 각 쿼리를 데이터베이스 서버에 보내고, 처리될 때까지 기다리고, 결과를 수신 및 처리하고, 일부 계산을 수행한 다음 서버에 추가 쿼리를 보내야 함을 의미합니다. 이 모든 작업으로 인해 프로세스 간 통신이 발생하고 클라이언트가 데이터베이스 서버와 다른 시스템에 있는 경우 네트워크 오버헤드도 발생합니다.

함께PL/pgSQL계산 블록과 일련의 쿼리를 그룹화할 수 토토.내부데이터베이스 서버는 절차적 언어의 강력함과 SQL 사용의 용이성을 제공하지만 클라이언트/서버 통신 오버헤드를 상당히 절감합니다.

  • 클라이언트와 서버 간의 추가 왕복이 제거됩니다.

  • 클라이언트가 필요하지 않은 중간 결과는 마샬링되거나 서버와 클라이언트 간에 전송될 필요가 없습니다.

  • 여러 차례의 쿼리 구문 분석을 피할 수 토토.

이것은 저장된 함수를 사용하지 않는 애플리케이션에 비해 상당한 성능 향상을 가져올 수 토토.

또한,PL/pgSQLSQL의 모든 데이터 유형, 연산자 및 기능을 사용할 수 있습니다.

42.1.2. 지원되는 인수 및 결과 데이터 유형

다음에 작성된 기능PL/pgSQL서버가 지원하는 모든 스칼라 또는 배열 데이터 유형을 인수로 받아들일 수 있으며 이러한 유형의 결과를 반환할 수 있습니다. 또한 이름으로 지정된 복합 유형(행 유형)을 허용하거나 반환할 수도 있습니다. 다음을 선언하는 것도 가능합니다.PL/pgSQL수락하는 기능기록, 이는 모든 복합 유형이 입력 또는 반환 역할을 함을 의미합니다.기록, 이는 결과가 호출 쿼리의 사양에 따라 열이 결정되는 행 유형임을 의미합니다.섹션 7.2.1.4.

PL/pgSQL함수는 다음을 사용하여 가변 개수의 인수를 허용하도록 선언할 수 있습니다.VARIADIC마커. 이는 SQL 함수와 정확히 동일한 방식으로 작동합니다.섹션 37.5.5.

PL/pgSQL함수는 다음에 설명된 다형성 유형을 허용하고 반환하도록 선언할 수도 있습니다.섹션 37.2.5, 따라서 함수에서 처리하는 실제 데이터 유형이 호출마다 달라질 수 있습니다. 예는 다음과 같습니다.섹션 42.3.1.

PL/pgSQL함수는 다음을 반환하도록 선언될 수도 있습니다.세트15653_15777다음으로 돌아가기결과 집합의 원하는 각 요소에 대해 또는 다음을 사용하여반환 쿼리쿼리 평가 결과를 출력합니다.

마지막으로, aPL/pgSQL함수를 반환하도록 선언할 수 토토.공허유용한 반환 값이 없는 경우. (또는 이 경우 프로시저로 작성할 수도 토토.)

PL/pgSQL함수는 반환 유형을 명시적으로 지정하는 대신 출력 매개변수를 사용하여 선언할 수도 토토. 이는 언어에 기본 기능을 추가하지 않지만 특히 여러 값을 반환할 때 편리합니다. 그만큼반품 테이블표기법을 대신하여 사용할 수도 토토.SETOF 반환.

구체적인 예는 다음에 나타납니다.섹션 42.3.1그리고섹션 42.6.1.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.