젠 토토/PGSQL이 얼마나 쉬운지를 보여주는 몇 가지 기능 만 있습니다. 기능은 쓸 수 있습니다. 더 복잡한 예를 위해 프로그래머 젠 토토/PGSQL에 대한 회귀 테스트를 볼 수 있습니다.
젠 토토/PGSQL에서 작문 기능의 고통스러운 세부 사항은 단일 따옴표 처리. functions create의 텍스트 소스 텍스트 함수는 문자 그대로 문자열이어야합니다. 문자 내부의 단일 따옴표 문자열은 백 슬래시와 함께 두 배로 또는 인용해야합니다. 우리는 여전히 우아한 대안을 찾고 있습니다. 그 동안 두 배가됩니다 아래 예제에서와 같이 단일 Qoutes를 사용해야합니다. 어느 향후 버전의에 대한 솔루션Postgres상향 호환됩니다.
다음 두 PL/PGSQL 함수는 그것과 동일합니다 C 언어 기능 토론의 상대방.
함수 생성 add_one (int4) int4를 다시 반환합니다. 시작하다 $ 1 + 1을 반환합니다. 끝; '언어'젠 토토pgsql ';
함수 생성 concat_text (텍스트, 텍스트) 텍스트를 반환합니다. 시작하다 반품 $ 1 || $ 2; 끝; '언어'젠 토토pgsql ';
다시 C의 예제와 동등한 젠 토토/PGSQL입니다. 기능.
함수 만들기 c_overpaid (emp, int4)는 bool을 다시 반환합니다. 선언하다 $ 1에 대한 EMPREC 별칭; $ 2에 대한 Sallim 별칭; 시작하다 emprec.salary isnull이면 `` 'f' '; 끝 IF; emprec.salary Sallim을 반환합니다. 끝; '언어'젠 토토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 ();