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, 실행 성공할 것입니다.
PL/PERL 기능의 스크립트에 제공된 인수 값 단순히 입력 인수는 텍스트 형식으로 변환됩니다 ( 그들이 선정 된 문으로 표시된 경우). 거꾸로, 그만큼return명령이 수락합니다 함수에 대한 입력 형식 인 문자열 선언 된 반환 유형. 따라서 PL/메이저 토토 사이트 프로그래머는 조작 할 수 있습니다 마치 텍스트 인 것처럼 데이터 값.
메이저 토토 사이트 기능에서 데이터베이스 자체에 대한 액세스
실험 모듈을 통해 수행dbd :: pgspi(또한 사용 가능
에CPAN
미러 사이트). 이 모듈은 a를 사용할 수있게합니다.DBI-공동
데이터베이스 핸들 명명$ pg_dbh
정상으로 쿼리를 수행하는 데 사용할 수 있습니다DBI구문.
pl/perl 자체는 현재 하나의 추가 Perl 만 제공합니다 명령:
elog
레벨, MSG로그 또는 오류 메시지를 방출합니다. 가능한 레벨은디버그, 통지및오류. 디버그및통지단순히 주어진을 방출하십시오 우체국 마스터 로그에 메시지를 보내고 클라이언트,의 경우통지).오류오류 조건을 제기합니다 기능은 버려지고 현재 거래는 다음과 같습니다 중단.
pl/perl 함수는 서로 직접 전화 할 수 없습니다 (때문에 그들은 Perl 내부의 익명 서브 루틴입니다). 현재 있습니다 그들이 글로벌 변수를 공유 할 수있는 방법이 없습니다.
pl/perl은 현재 트리거를 쓰는 데 사용될 수 없습니다 기능.
DBD :: PGSPI 또는 유사한 기능을 통합해야합니다 표준postgresql배포.