다음 테이블이 있다고 가정합니다:
테이블 직원 생성(
이름 텍스트,
기본급 정수,
보너스 정수
);총 보상(기본 + 보너스)을 얻기 위해 우리는
다음과 같이 함수를 정의할 수 있습니다.CREATE FUNCTION totalcomp(정수, 정수) RETURNS 정수
AS '$_[0] + $_[1] 반환'
언어 'plperl';함수에 대한 인수가 전달되었음을 확인하세요@_예상했던 대로입니다.이제 우리는 다음과 같이 함수를 사용할 수 있습니다:
SELECT 이름, totalcomp(기본급, 보너스) FROM 직원;
그러나 전체 튜플을 함수에 전달할 수도 있습니다:
CREATE FUNCTION empcomp(직원) 정수 AS '를 반환합니다.
내 $emp = 교대;
return $emp-''basesalary'' + $emp-''bonus'';
' 언어 'plperl';튜플은 해시에 대한 참조로 전달됩니다. 열쇠는
튜플에 있는 필드의 이름입니다. 해시 값은
튜플의 해당 필드.팁:함수 본문이 SQL로 전달되기 때문에 문자열 리터럴 to함수 생성당신 Perl 소스 내에서 작은따옴표를 이스케이프해야 합니다. 위에 표시된 대로 두 배로 늘리거나 확장된 인용 함수(q[], qq[], qw[]). 백슬래시는 두 배로 늘려 이스케이프해야 합니다.
새로운 기능empcomp사용 가능 좋아요:
이름 선택, empcomp(직원) FROM 직원;
다음은 작동하지 않는 기능의 예입니다. 보안상의 이유로 파일 시스템 작업은 허용되지 않습니다.
CREATE FUNCTION badfunc()는 정수 AS '를 반환합니다.
open(TEMP, "/tmp/badfile");
TEMP "찾았습니다!\n"을 인쇄합니다.
1을 반환합니다.
' 언어 'plperl';함수 생성은 성공하지만 실행 중입니다.
그렇지 않을 것이다.