2025 년 7 월 17 일 : | 윈 토토 : 윈 토토 18 베타
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

26.2. pl/perl 사용

다음 표가 있다고 가정합니다.

테이블 직원 생성 (
    이름 텍스트,
    기본 정수,
    보너스 정수
);
총 보상 (기본 + 보너스)을 얻기 위해 우리 함수를 다음과 같이 정의 할 수 있습니다.
함수 생성 TotalComp (정수, 정수) 정수를 반환합니다
    as 'return $ _ [0] + $ _ [1]'
    언어 'plperl';
함수에 대한 인수가 전달되어 있음을 알 수 있습니다@_예상대로.

이제 우리는 다음과 같은 기능을 사용할 수 있습니다 :

직원의 이름, Totalcomp (Basesalary, 보너스) 선택;

그러나 우리는 또한 전체 튜플을 우리의 기능으로 전달할 수 있습니다 :

기능 작성 EMPCOMP (Employee)는 정수를 반환합니다.
    내 $ emp = shift;
    return $ emp-  ''basesalary '' + $ emp-  ''bonus '';
'언어'plperl ';
튜플은 해시에 대한 참조로 전달됩니다. 키는 튜플의 필드 이름. 해시 값은 값입니다 튜플의 해당 필드.

팁 :함수 본체가 SQL로 전달되기 때문에 문자열 리터럴함수 생성당신 Perl 소스 내에서 단일 따옴표를 피해야합니다. 위에 표시된대로 두 배로 또는 확장 된 것을 사용하여 인용 기능 (Q [], QQ [], QW []). 백 슬래시는 두 배로 늘어서 탈출해야합니다.

새로운 함수empcomp사용할 수 있습니다 좋다:

직원의 이름, Empcomp (Employee) 선택;

다음은 작동하지 않는 함수의 예입니다. 파일 시스템 운영은 보안상의 이유로 허용되지 않습니다.

함수 만들기 badfunc ()는 정수를 반환합니다.
    Open (임시, "/tmp/badfile");
    인쇄 온도 "Gotcha! \ n";
    반환 1;
'언어'plperl ';
함수 생성이 성공하지만 실행 그렇지 않을 것입니다.