이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

젠 토토/PGSQL이 얼마나 쉬운지를 보여주는 몇 가지 기능 만 있습니다. 기능은 쓸 수 있습니다. 더 복잡한 예를 위해 프로그래머 젠 토토/PGSQL에 대한 회귀 테스트를 볼 수 있습니다.

젠 토토/PGSQL에서 작문 기능의 고통스러운 세부 사항은 단일 따옴표 처리. functions create의 텍스트 소스 텍스트 함수는 문자 그대로 문자열이어야합니다. 문자 내부의 단일 따옴표 문자열은 백 슬래시와 함께 두 배로 또는 인용해야합니다. 우리는 여전히 우아한 대안을 찾고 있습니다. 그 동안 두 배가됩니다 아래 예제에서와 같이 단일 Qoutes를 사용해야합니다. 어느 향후 버전의에 대한 솔루션Postgres상향 호환됩니다.

간단합니다 젠 토토/pgsql 함수

다음 두 PL/PGSQL 함수는 그것과 동일합니다 C 언어 기능 토론의 상대방.

함수 생성 add_one (int4) int4를 다시 반환합니다.
    시작하다
        $ 1 + 1을 반환합니다.
    끝;
'언어'젠 토토pgsql ';
함수 생성 concat_text (텍스트, 텍스트) 텍스트를 반환합니다.
    시작하다
        반품 $ 1 || $ 2;
    끝;
'언어'젠 토토pgsql ';

젠 토토/pgsql 함수 복합 유형

다시 C의 예제와 동등한 젠 토토/PGSQL입니다. 기능.

함수 만들기 c_overpaid (emp, int4)는 bool을 다시 반환합니다.
    선언하다
        $ 1에 대한 EMPREC 별칭;
        $ 2에 대한 Sallim 별칭;
    시작하다
        emprec.salary isnull이면
            `` 'f' ';
        끝 IF;
        emprec.salary Sallim을 반환합니다.
    끝;
'언어'젠 토토pgsql ';

젠 토토/pgsql 트리거 절차

이 트리거는 언제라도 행이 삽입되거나 업데이트되는지 확인합니다. 테이블에서 현재 사용자 이름과 시간이 열. 그리고 직원 이름이 주어지고 급여는 긍정적 인 가치입니다.

테이블 emp 만들기 (
    Empname 텍스트,
    급여 INT4,
    last_date dateTime,
    last_user 이름);

함수를 만듭니다 emp_stamp ()는 opaque as를 반환합니다
    시작하다
        - empname과 월급이 주어 졌는지 확인하십시오
        새로운.EmpName ISNULL이라면
            ``Empname은 널 값이 될 수 없다 ''는 예외를 높이십시오.
        끝 IF;
        그렇다면 isnull이라면
            예외 제기 ''%는 널 급여를 가질 수 없습니다 '', new.empname;
        끝 IF;

        - 그녀가 지불해야 할 때 누가 우리를 위해 일합니까?
        새로운.salary <0이라면
            예외 제기 ''%는 부정적인 급여를 가질 수 없습니다 '', new.empname;
        끝 IF;

        - 누가 급여를 바꾸 었는지 기억하십시오
        new.last_date : = ''now '';
        new.last_user : = getpgusername ();
        새로운 반환;
    끝;
'언어'젠 토토pgsql ';

EMP에 삽입하거나 업데이트하기 전에 Trigger Emp_stamp를 만듭니다
    각 행에 대해 Execute Procedure Emp_stamp ();