다음은 그것이 얼마나 쉬운지를 보여주는 몇 가지 기능입니다. PL/pgSQL 함수를 작성합니다. 더 복잡한 예를 들어보면 프로그래머는 PL/pgSQL에 대한 회귀 테스트를 살펴볼 수 있습니다.
PL/pgSQL에서 함수 작성 시 한 가지 고통스러운 세부 사항은 작은따옴표 처리. 함수의 소스 텍스트는 다음과 같습니다.함수 생성리터럴 문자열이어야 합니다. 리터럴 문자열 내부의 작은따옴표는 두 배로 표시되거나 백슬래시로 인용했습니다. 우리는 여전히 우아한 것을 찾고 있습니다. 대안. 그 동안 다음과 같이 작은따옴표를 두 배로 늘립니다. 아래 예를 사용해야 합니다. 이에 대한 어떤 해결책이라도 향후 버전포스트그레할 것이다 이후 버전과 호환되어야 합니다.
탈출 방법에 대한 자세한 설명과 예를 보려면 다양한 상황의 작은따옴표는 참조하세요.섹션 24.5.1.1.
예 24-2. 간단한 PL/pgSQL 함수 정수 증가
다음 두 PL/pgSQL 함수는 해당 함수와 동일합니다. C 언어 함수 토론의 대응 부분입니다. 이 함수는를 받습니다.정수그리고 1씩 증가시켜 증가된 값을 반환합니다.
CREATE FUNCTION add_one (정수) 정수 AS '를 반환합니다.
시작
$1 + 1을 반환합니다.
끝;
' 언어 'plpgsql';
예 24-3. 간단한 PL/pgSQL 함수 텍스트 연결
이 함수는 2개를 받습니다.텍스트매개변수를 연결하고 이를 연결한 결과를 반환합니다.
CREATE FUNCTION concat_text (text, text) 텍스트를 '로 반환합니다.
시작
1달러를 돌려주세요 || $2;
끝;
' 언어 'plpgsql';
예 24-4. 복합의 PL/pgSQL 함수 유형
이 예에서는 EMP(테이블)와정수함수에 대한 인수로 다음을 반환합니다. 에부울. "급여" 필드에 EMP 테이블은NULL, "f"를 반환합니다. 그렇지 않으면 해당 필드를와 비교합니다.정수함수에 전달되어 다음을 반환합니다.부울비교 결과(t 또는 에프). 이것은 C의 예와 동일한 PL/pgSQL입니다. 기능.
CREATE FUNCTION c_overpaid (EMP, 정수) RETURNS 부울 AS '
선언
$1에 대한 emprec 별칭;
살림 별칭 $2;
시작
IF emprec.salary ISNULL 그러면
''f''를 반환합니다.
종료하면;
RETURN emprec.salary sallim;
끝;
' 언어 'plpgsql';