이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 43.4. pl/스포츠 토토 결과의 글로벌 값버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

41.4. 토토 결과/perl의 글로벌 값

Global Hash를 사용할 수 있습니다%_shared함수 호출간에 코드 참조를 포함한 데이터를 저장합니다 현재 세션의 수명.

공유 데이터에 대한 간단한 예는 다음과 같습니다.

함수 생성 또는 교체 set_var (이름 텍스트, val 텍스트) 텍스트를 $$로 반환합니다.
    if ($ _shared $ _ [0] = $ _ [1]) 
        'OK'를 반환합니다.
     또 다른 
        return "공유 변수 $ _ [0]까지 $ _ [1]을 설정할 수 없습니다.";

코드를 사용하는 약간 더 복잡한 예입니다. 참조:

function myfuncs ()를 만들거나 바꾸십시오
    $ _shared myquote = sub 
        내 $ arg = shift;
        $ arg = ~ s/([ '\\])/\\ $ 1/g;
        " '$ arg'"를 반환합니다.
    ;
$$ 언어 토토 결과perl;

myfuncs ()를 선택하십시오. / * 함수 초기화 */

/ * 견적 함수를 사용하는 함수 설정 */

function use_quote (텍스트)를 $$로 반환합니다
    내 $ text_to_quote = shift;
    내 $ qfunc = $ _shared myquote;
    return & $ qfunc ($ text_to_quote);
$$ 언어 토토 결과perl;

(위를 One-Liner로 대체 할 수 있습니다return $ _shared myquote- ($ _ [0]);at 가독성 비용.)

보안상의 이유로 토토 결과/PERL은 어떤 기능을 수행하는 기능을 실행합니다 해당 역할에 대한 별도의 PERL 통역사에서 하나의 SQL 역할. 이것 한 사용자가 우발적이거나 악의적 인 간섭을 방지합니다 다른 사용자의 토토 결과/PERL 기능의 동작. 각각 통역사는 자체 가치가%_shared변수 및 기타 글로벌 상태. 따라서, 두 개의 토토 결과/perl 함수는 동일한 값의를 공유합니다.%_shared만약 그리고 그들이 그에 의해 실행되는 경우에만 동일한 SQL 역할. 단일 세션이있는 응용 프로그램에서 여러 SQL 역할에서 코드를 실행합니다 (viaSecurity Definer기능, 사용역할 설정등) 명시 적 단계를 수행해야 할 수도 있습니다 토토 결과/PERL 기능이를 통해 데이터를 공유 할 수 있도록%_shared. 그렇게하려면 그 기능을 확인하십시오 통신 해야하는 것은 같은 사용자가 소유하고 표시Security Definer. 물론 당신은해야합니다 그러한 기능은 무엇이든 할 수 없도록주의하십시오. 의도하지 않은.