개발 버전 :Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

42.4. PL/윈 토토의 글로벌 데이터#

때로는 함수에 대한 두 호출 사이에 보유되거나 다른 함수 사이에서 공유되는 일부 전역 데이터를 갖는 것이 유용합니다. 이것은 PL/윈 토토에서 쉽게 수행되지만 이해해야 할 몇 가지 제한 사항이 있습니다.

보안상의 이유로, PL/윈 토토은 해당 역할에 대해 별도의 윈 토토 통역사에서 하나의 SQL 역할로 호출 된 기능을 실행합니다. 이렇게하면 한 사용자가 다른 사용자의 PL/윈 토토 기능의 동작으로 우발적이거나 악의적 인 간섭을 방지합니다.글로벌tcl 변수. 따라서 두 개의 PL/TCL 함수는 동일한 SQL 역할에 의해 실행되는 경우에만 동일한 글로벌 변수를 공유합니다.보안 정의기함수, 사용역할 설정등) pl/윈 토토 함수가 데이터를 공유 할 수 있도록 명시적인 조치를 취해야 할 수도 있습니다. 그렇게하려면 통신 해야하는 기능이 동일한 사용자가 소유하고 있는지 확인하고 표시하십시오보안 정의기. 물론 그러한 기능은 의도하지 않은 일을하는 데 익숙하지 않도록주의해야합니다.

SESSION에 사용 된 모든 PL/TCLU 기능은 동일한 TCL 통역사에서 실행됩니다. 물론 PL/TCL 기능에 사용되는 통역사와는 다릅니다. 따라서 글로벌 데이터는 PL/TCLU 기능간에 자동으로 공유됩니다.

PL/윈 토토 기능을 의도하지 않게 서로 방해하는 것을 방지하기 위해 전역 배열은 각 기능에 사용할 수 있습니다.upvar명령. 이 변수의 글로벌 이름은 함수의 내부 이름이고 로컬 이름은입니다.GD. 권장됩니다GD함수의 지속적인 개인 데이터에 사용하십시오. 여러 기능에서 구체적으로 공유하려는 값에 대해서만 일반 TCL 글로벌 변수를 사용하십시오.GD배열은 특정 통역사 내에서만 글로벌이므로 위에서 언급 한 보안 제한을 우회하지 않습니다.)

사용의 예GDSPI_EXECP아래 예제.