일반적으로 PL/Perl은 다음과 같이 설치됩니다."젠 토토 수 있는"이름이 지정된 프로그래밍 언어plperl. 이 설정에서 특정 Perl 작업은 다음과 같습니다. 보안을 유지하기 위해 비활성화되었습니다. 일반적으로 다음과 같은 작업은 환경과 상호작용하는 것은 제한되어 있습니다. 이 파일 핸들 작업을 포함합니다.요구및사용(용 외부 모듈). 내부에 접근할 수 있는 방법은 없습니다. 데이터베이스 서버 프로세스를 사용하거나 OS 수준 액세스 권한을 얻으려면 C 함수처럼 서버 프로세스의 권한을 부여합니다. 따라서, 권한이 없는 데이터베이스 사용자라면 누구나 이 기능을 사용할 수 있습니다. 언어.
다음은 작동하지 않는 기능의 예입니다. 보안상의 이유로 파일 시스템 작업은 허용되지 않습니다.
CREATE FUNCTION badfunc()는 정수를 '로 반환합니다.
open(TEMP, "/tmp/badfile");
TEMP "찾았습니다!\n"을 인쇄합니다.
1을 반환합니다.
' 언어 plperl;
함수 생성은 성공하지만 실행 중입니다. 그렇지 않을 것이다.
때로는 Perl 함수를 작성하는 것이 바람직할 때도 있습니다. 제한됨. 예를 들어, Perl 함수를 원할 수도 있습니다. 메일을 보냅니다. 이러한 경우를 처리하기 위해 PL/Perl을 설치할 수도 있습니다. 으로"젠 토토 수 없음"언어(보통 전화함PL/PerlU). 이 경우 전체 Perl 언어를 사용할 수 있습니다. 만약createlang언어, 언어 이름을 설치하는 데 사용되는 프로그램plperlu젠 토토 수 없는 것을 선택합니다 PL/Perl 변형.
a의 작가PL/PerlU함수는 다음 작업을 수행하는 데 사용할 수 없도록 주의해야 합니다. 원하지 않는 모든 일을 할 수 있기 때문입니다. 데이터베이스 관리자로 로그인한 사용자가 수행할 수 있습니다. 데이터베이스 시스템에서는 데이터베이스 수퍼유저만 허용합니다. 신뢰할 수 없는 언어로 함수를 만듭니다.
위 함수가 슈퍼유저에 의해 다음을 사용하여 생성된 경우 언어plperlu, 실행은 성공했습니다.
참고:그동안PL/펄함수는 별도의 Perl에서 실행됩니다. 각 SQL 역할에 대한 통역사, 모두PL/PerlU주어진 함수에서 실행되는 함수 세션은 단일 Perl 인터프리터에서 실행됩니다(다음 중 하나가 아님). 에 사용되는 것PL/펄함수). 이것은 허용합니다PL/PerlU데이터를 자유롭게 공유하는 기능, 하지만 사이에는 통신이 이루어질 수 없습니다.PL/펄그리고PL/PerlU함수.
참고:Perl은 다중 인터프리터를 지원할 수 없습니다 적절한 방법으로 구축되지 않은 한 하나의 프로세스 내에서 플래그, 즉 둘 중 하나입니다.use다중성또는useithreads. (use다중성당신이 아닌 이상 선호됩니다 실제로 스레드를 사용해야합니다. 자세한 내용은 다음을 참조하세요.perlembed남자 페이지.) 만약PL/펄사용됨 이런 방식으로 구축되지 않은 Perl 사본을 사용하면 세션당 하나의 Perl 인터프리터만 사용할 수 있습니다. 따라서 하나의 세션은 둘 중 하나만 실행할 수 있습니다.PL/PerlU함수 또는PL/펄모두 호출되는 함수 동일한 SQL 역할입니다.