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

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

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

동일한 TCL 통역사에서 세션 실행에 사용 된 모든 PL/TCLU 기능은 PL/TCL 기능에 사용되는 통역사와 구별됩니다. 따라서 글로벌 데이터는 PL/TCLU 기능간에 자동으로 공유됩니다. 모든 PL/TCLU 기능이 동일한 신뢰 수준, 즉 데이터베이스 슈퍼업자의 기능에서 실행되기 때문에 보안 위험으로 간주되지 않습니다.

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

사용의 예gdSPI_EXECP아래 예제.

정정 제출

문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면