이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

다음은 PL/pgSQL이 얼마나 쉬운지 보여주는 몇 가지 기능입니다. 함수를 작성할 수 있습니다. 더 복잡한 예를 보려면 프로그래머 PL/pgSQL에 대한 회귀 테스트를 살펴볼 수도 있습니다.

젠 토토/pgSQL에서 함수 작성에 대한 한 가지 고통스러운 세부 사항은 작은따옴표 처리. CREATE의 함수 소스 텍스트 FUNCTION은 리터럴 문자열이어야 합니다. 리터럴 내부의 작은따옴표 문자열은 두 배로 묶거나 백슬래시로 묶어야 합니다. 우리는 여전히 우아한 대안을 찾고 있습니다. 그 사이 두배로 늘었다 아래 예와 같은 단일 인용문을 사용해야 합니다. 모두 이에 대한 솔루션은 향후 버전에서 제공됩니다.포스트그레스상위 버전과 호환됩니다.

간단한 것 젠 토토/pgSQL 함수

다음 두 PL/pgSQL 함수는 해당 함수와 동일합니다. C 언어 함수 토론의 대응 부분입니다.

CREATE FUNCTION add_one (int4)는 int4 AS '를 반환합니다.
    시작
        $1 + 1을 반환합니다.
    끝;
' 언어 '젠 토토pgsql';
CREATE FUNCTION concat_text (text, text) 텍스트를 '로 반환합니다.
    시작
        1달러를 돌려주세요 || $2;
    끝;
' 언어 '젠 토토pgsql';

젠 토토/pgSQL 함수 복합 유형에 대한

다시 말하면 The C의 예와 동일한 젠 토토/pgSQL입니다. 기능.

CREATE FUNCTION c_overpaid (EMP, int4) RETURNS bool AS '
    선언
        $1에 대한 emprec 별칭;
        살림 별칭 $2;
    시작
        IF emprec.salary ISNULL 그러면
            ''f''를 반환합니다.
        종료하면;
        RETURN emprec.salary  sallim;
    끝;
' 언어 '젠 토토pgsql';

젠 토토/pgSQL 트리거 절차

이 트리거는 행이 삽입되거나 업데이트될 때마다 보장합니다. 테이블에는 현재 사용자 이름과 시간이 표시됩니다. 행. 그리고 직원의 이름이 제공되고 급여는 양수 값입니다.

테이블 emp 생성(
    엠프 이름 텍스트,
    급여 int4,
    last_date 날짜시간,
    last_사용자 이름);

CREATE FUNCTION emp_stamp ()는 불투명한 값을 반환합니다.
    시작
        -- 사원명과 급여가 입력되었는지 확인하세요.
        NEW.empname이 ISNULL인 경우
            RAISE EXCEPTION ''empname은 NULL 값이 될 수 없습니다'';
        종료하면;
        NEW.salary가 NULL인 경우
            RAISE EXCEPTION ''%는 NULL 급여를 가질 수 없습니다'', NEW.empname;
        종료하면;

        -- 그녀가 비용을 지불해야 할 때 누가 우리를 위해 일합니까?
        NEW.salary < 0이면
            RAISE EXEPTION ''%는 음수 급여를 가질 수 없습니다'', NEW.empname;
        종료하면;

        -- 언제 급여를 변경했는지 기억해 보세요.
        NEW.last_date := ''지금'';
        NEW.last_user := getpgusername();
        새로운 반품;
    끝;
' 언어 '젠 토토pgsql';

emp를 삽입하거나 업데이트하기 전에 emp_stamp 트리거를 생성하세요.
    각 행 실행 절차 emp_stamp();