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

25.3. 설명

25.3.1. pl/메이저 토토 사이트 함수 및 인수

pl/메이저 토토 사이트 언어로 함수를 만들려면 표준 구문

기능 생성funcName(Argument-Types) 반환return-typeas '
    # pl/메이저 토토 사이트 기능 본체
'언어 pl메이저 토토 사이트;

pl/메이저 토토 사이트u는 언어가 동일합니다. 로 지정Pl메이저 토토 사이트u.

함수의 본문은 일반적인 메이저 토토 사이트 코드입니다. 논쟁 그리고 결과는 다른 메이저 토토 사이트 Subroutine에서와 같이 처리됩니다. 인수는에 통과됩니다.@_및 a 결과 값은로 반환됩니다.return또는 마지막 표현식이 함수에서 평가 된대로. 을 위한 예, 두 정수 값 중 더 큰 것을 반환하는 함수 다음과 같이 정의 할 수 있습니다.

함수 생성 perl_max (정수, 정수) 정수를 반환합니다.
    if ($ _ [0] $ _ [1]) return $ _ [0]; 
    반환 $ _ [1];
'언어 plperl;

null이 함수로 전달되면 인수 값이 로 나타납니다"정의되지 않은"메이저 토토 사이트. 그만큼 위의 기능 정의는 Null과 잘 어울리지 않습니다. 입력 (실제로는 제로 인 것처럼 작용합니다). 우리 추가 할 수 있습니다with (isstrict)만들기위한 함수 정의PostgreSQL더 합리적인 일을하십시오 : 널이 통과되면 함수는 전혀 호출되지 않습니다. 그러나 자동으로 널 결과를 반환합니다. 또는, 우리는 정의되지 않은 입력을 확인할 수 있습니다 기능 본체. 예를 들어, 우리가 메이저 토토 사이트_max를 원한다고 가정 해 봅시다 널 한 명과 널을 반환하기 위해 하나의 널과 널이 아닌 인수로 널보다는 논쟁 :

함수 생성 perl_max (정수, 정수) 정수를 반환합니다.
    내 ($ a, $ b) = @_;
    if (! 정의 $ a) 
        if (! 정의 $ b) return undef; 
        반품 $ B;

    if (! 정의 $ b) return $ a; 
    if ($ a $ b) return $ a; 
    반품 $ B;
'언어 plperl;

위에 표시된대로 PL/메이저 토토 사이트 함수에서 NULL을 반환하려면 정의되지 않은 값을 반환하십시오. 이것은 할 수 있습니다 기능은 엄격하거나 없어.

복합 유형 인수는 다음과 같은 함수로 전달됩니다 해시에 대한 참조. 해시의 키는 속성입니다 복합 유형의 이름. 예는 다음과 같습니다.

테이블 직원 만들기 (
    이름 텍스트,
    기본 정수,
    보너스 정수
);

function empcomp (Employee)는 정수를 '로 반환합니다.
    내 ($ emp) = @_;
    return $ emp-  ''basesalary '' + $ emp-  ''bonus '';
'언어 plperl;

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

현재 반환에 대한 지원은 없습니다 복합 유형 결과 값

팁 :함수 본문이 an SQL 문자열 리터럴 to생성 기능, 당신은 단일 따옴표를 피해야합니다 일반적으로 두 배가되는 메이저 토토 사이트 소스 내의 백 슬래시 위의 예에서 볼 수 있듯이. 또 다른 가능 접근 방식은 메이저 토토 사이트 's를 사용하여 단일 따옴표를 작성하지 않는 것입니다. 확장 인용 기능 (Q [], QQ [], QW []).

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

함수 만들기 badfunc ()는 정수를 반환합니다.
    Open (임시, "/tmp/badfile");
    인쇄 온도 "Gotcha! \ n";
    반환 1;
'언어 pl메이저 토토 사이트;

함수 생성이 성공하지만 실행 그렇지 않을 것입니다.

동일한 함수가 슈퍼 유저에 의해 생성 된 경우 언어 사용Pl메이저 토토 사이트u, 실행 성공할 것입니다.

25.3.2. 데이터 pl/메이저 토토 사이트의 값

PL/PERL 기능의 스크립트에 제공된 인수 값 단순히 입력 인수는 텍스트 형식으로 변환됩니다 ( 그들이 선정 된 문으로 표시된 경우). 거꾸로, 그만큼return명령이 수락합니다 함수에 대한 입력 형식 인 문자열 선언 된 반환 유형. 따라서 PL/메이저 토토 사이트 프로그래머는 조작 할 수 있습니다 마치 텍스트 인 것처럼 데이터 값.

25.3.3. pl/메이저 토토 사이트에서 데이터베이스 액세스

메이저 토토 사이트 기능에서 데이터베이스 자체에 대한 액세스 실험 모듈을 통해 수행dbd :: pgspi(또한 사용 가능 에CPAN 미러 사이트). 이 모듈은 a를 사용할 수있게합니다.DBI-공동 데이터베이스 핸들 명명$ pg_dbh정상으로 쿼리를 수행하는 데 사용할 수 있습니다DBI구문.

pl/perl 자체는 현재 하나의 추가 Perl 만 제공합니다 명령:

elog 레벨, MSG

로그 또는 오류 메시지를 방출합니다. 가능한 레벨은디버그, 통지오류. 디버그통지단순히 주어진을 방출하십시오 우체국 마스터 로그에 메시지를 보내고 클라이언트,의 경우통지).오류오류 조건을 제기합니다 기능은 버려지고 현재 거래는 다음과 같습니다 중단.

25.3.4. 누락 된 기능

pl/perl 함수는 서로 직접 전화 할 수 없습니다 (때문에 그들은 Perl 내부의 익명 서브 루틴입니다). 현재 있습니다 그들이 글로벌 변수를 공유 할 수있는 방법이 없습니다.

pl/perl은 현재 트리거를 쓰는 데 사용될 수 없습니다 기능.

DBD :: PGSPI 또는 유사한 기능을 통합해야합니다 표준postgresql배포.