이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 42.4. PL/토토 꽁 머니의 글로벌 데이터버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

39.4. PL/Tcl의 전역 데이터

때때로 일부 글로벌 데이터를 보유하는 것이 유용할 때도 있습니다. 함수에 대한 두 호출 사이에 또는 서로 다른 호출 사이에 공유됩니다. 기능. 이는 롤 토토/Tcl에서 쉽게 수행되지만 몇 가지 이해해야 할 제한 사항입니다.

보안상의 이유로 PL/Tcl은 다음에서 호출되는 함수를 실행합니다. 해당 역할에 대한 별도의 Tcl 해석기에서 하나의 SQL 역할. 이 한 사용자의 우발적이거나 악의적인 간섭을 방지합니다. 다른 사용자의 PL/Tcl 기능 동작. 각각의 그러한 통역사는 모든 것에 대해 고유한 값을 갖습니다."글로벌"Tcl 변수. 따라서 두 개의 PL/Tcl 함수 다음과 같은 경우에만 동일한 전역 변수를 공유합니다. 동일한 SQL 역할에 의해 실행됩니다. 단일 애플리케이션에서 세션은 여러 SQL 역할에서 코드를 실행합니다(via보안 정의자함수, 사용역할 설정등) 명시적인 조치를 취해야 할 수도 있습니다. 롤 토토/Tcl 기능이 데이터를 공유할 수 있도록 보장합니다. 그러기 위해서는 통신해야 하는 기능이 동일한 소유인지 확인하세요. 사용자를 표시하고 표시보안 정의자. 물론 그러한 기능을 다음 용도로 사용할 수 없도록 주의해야 합니다. 의도치 않은 일을 하게 됩니다.

세션에 사용된 모든 롤 토토/TclU 기능은 동일한 환경에서 실행됩니다. 물론 Tcl 인터프리터는 Tcl 인터프리터와는 다릅니다. 롤 토토/Tcl 기능에 사용되는 인터프리터. 그래서 글로벌 데이터는 롤 토토/TclU 기능 간에 자동으로 공유됩니다. 이것은 아니다 모든 롤 토토/TclU 기능이 실행되기 때문에 보안 위험으로 간주됩니다. 동일한 신뢰 수준, 즉 데이터베이스 슈퍼유저의 신뢰 수준에서.

롤 토토/Tcl 기능이 의도치 않게 발생하는 것을 방지하기 위해 서로 간섭하면서 전역 배열을 사용할 수 있게 됩니다. 각 기능은upvar명령. 이 변수의 전역 이름은 함수의 이름입니다. 내부 이름, 로컬 이름은 다음과 같습니다.GD. 다음을 권장합니다.GD다음에 사용됩니다. 함수의 지속적인 개인 데이터. 일반 Tcl 전역 사용 특별히 의도한 값에 대해서만 변수 여러 기능 간에 공유됩니다. (참고GD어레이는 특정 내에서만 전역적입니다. 통역사이므로 보안 제한을 우회하지 않습니다. 위에서 언급했습니다.)

사용예GD에 나타남spi_execp아래 예.