일반적으로 pl/perl이 a로 설치됩니다."젠 토토 수있는"프로그래밍 언어 이름plperl. 이 설정에서는 특정 Perl 작업이 있습니다 보안을 보존하기 위해 비활성화되었습니다. 일반적으로 운영 환경과 상호 작용하는 것입니다. 이것 파일 핸들 작업 포함요구및use(for 외부 모듈). 내부의 접근 방법은 없습니다 데이터베이스 서버 프로세스 또는 C 함수가 수행 할 수있는 서버 프로세스의 권한. 따라서, 비공식적 인 데이터베이스 사용자는이를 사용하도록 허용 될 수 있습니다. 언어.
다음은 작동하지 않는 함수의 예입니다. 파일 시스템 운영은 보안상의 이유로 허용되지 않습니다.
함수 만들기 badfunc ()은 정수를 반환합니다. Open (임시, "/tmp/badfile"); 인쇄 온도 "Gotcha! \ n"; 반환 1; '언어 plperl;
함수 생성이 성공하지만 실행 그렇지 않을 것입니다.
때로는 그렇지 않은 Perl 기능을 작성하는 것이 바람직합니다. 제한된. 예를 들어, Perl 기능을 원할 수도 있습니다 메일을 보냅니다. 이러한 경우를 처리하기 위해 PL/PERL도 설치할 수도 있습니다 로"젠 토토 수없는"언어 (보통 라고 불리는pl/perlu). 이 경우 전체 perl 언어를 사용할 수 있습니다. 인 경우Createla젠 토토프로그램은 언어, 언어 이름을 설치하는 데 사용됩니다Plperlu젠 토토 수없는 사람을 선택합니다 pl/perl 변형.
a의 작가pl/perlu함수는 기능을 사용할 수 없도록 조심해야합니다. 원치 않는 것은 무엇이든 할 수 있기 때문입니다. 데이터베이스 관리자로 로그인 한 사용자가 수행 할 수 있습니다. 데이터베이스 시스템을 사용하면 데이터베이스 슈퍼 사용자 만 젠 토토 수없는 언어로 기능을 만듭니다.
위의 기능이 언어Plperlu, 실행 성공.
참고 :whilepl/perl함수는 별도의 perl에서 실행됩니다 각 SQL 역할에 대한 통역사, Allpl/perlu주어진에서 실행 된 기능 세션은 단일 Perl 통역사에서 실행됩니다 (어떤 것도 아닙니다. 에 사용 된 것들pl/perl함수). 이것은 허용pl/perlu데이터를 자유롭게 공유하는 기능, 그러나 사이에 의사 소통이 발생할 수 없습니다pl/perlandpl/perlu기능.
참고 :Perl은 여러 통역사를 지원할 수 없습니다 적절한 것으로 구축되지 않는 한 하나의 프로세스 내에서 깃발, 즉 어느 쪽이든usemultiplicity또는useitHreads. (usemultiplicity가 아니라면 선호됩니다 실제로 스레드를 사용해야합니다. 자세한 내용은를 참조하십시오.perlembed남자 페이지.) ifpl/perl사용됩니다 이런 식으로 만들어지지 않은 Perl 사본으로 세션 당 하나의 Perl 통역사 만 있으면 가능하며 그래서 한 세션은 어느 쪽이든 실행할 수 있습니다pl/perlu함수 또는pl/perl모두 호출되는 기능 동일한 SQL 역할.