때로는 함수에 대한 두 호출 사이에 보유되거나 다른 함수 사이에서 공유되는 일부 전역 데이터를 갖는 것이 유용합니다. 이것은 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
배열은 특정 통역사 내에서만 글로벌이므로 위에서 언급 한 보안 제한을 우회하지 않습니다.)
사용의 예gd
SPI_EXECP
아래 예제.
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면