이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 41.11. 범퍼카 토토/PGSQL 아래의 후드버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

39.10. pl/pgsql아래 후드

이 섹션에서는 일부 구현 세부 정보에 대해 설명합니다pl/pgsql사용자가 알고 있습니다.

39.10.1. 변수 대체

a 내 SQL 문 및 표현식pl/pgsql함수는 변수를 참조 할 수 있습니다pl/pgsql쿼리 매개 변수를 대체합니다

foo (foo) 값 (foo)에 삽입;

첫 번째 발생foo해야합니다foo. 두 번째 발생은 a의 이름이어야합니다

참고 : 스포츠 토토9.0 이전 버전은 변수를 대체하려고합니다.

변수 이름은 구문 적으로 다르지 않기 때문입니다

dest에 삽입 (col) src에서 foo + bar를 선택하십시오.

여기,destandSRC테이블 이름이어야합니다.coldest11849_11857fooandbar합리적으로있을 수 있습니다SRC.

기본적으로pl/pgsql의지pl/pgsql어떤 해석

가장 간단한 솔루션은 변수 또는 열의 이름을 바꾸는 것입니다. 에이pl/pgsql당신보다 변수V_뭔가열이 없지만V_, 충돌은 없습니다

또는 대안 적으로 모호한 참조를 할 수 있습니다src.fooPostgre범퍼카 토토 : 문서 : 9.2 : PL/PG범퍼카 토토의 구조). 을 위한

<< 블록 

여기block.foo변수를 의미합니다fooinSRC. 기능 매개 변수뿐만 아니라발견, can

때로는 모호한 모든 것을 고치는 것이 비현실적입니다pl/pgsql코드. 그러한 경우에 당신은 할 수 있습니다PL/PGSQLPL/PGSQL'sPostgreSQL9.0) 또는 테이블 열 (일부와 호환됩니다.Oracle).

시스템 전체 에서이 동작을 변경하려면plpgsql.variable_conflict오류,use_variable또는use_column(where오류공장 기본값입니다). 이 매개 변수pl/pgsql기능이지만 진술은 아닙니다pl/pgsql함수는 가능합니다

당신은 또한 기능별로 동작을 설정할 수도 있습니다

#variable_conflict 오류

이 명령은 작성된 함수에만 영향을 미칩니다.plpgsql.variable_conflict. 예는입니다.

함수 만들기 stamp_user (id int, 댓글 텍스트)를 $$로 반환합니다.

in업데이트명령,CURTIME,댓글id함수를 참조합니다사용자그 이름의 열이 있습니다. 우리가 주목하십시오users.idin여기서테이블 열을 참조하는 조항. 그러나 우리는하지 않았다댓글업데이트구문 적 으로야하기 때문에사용자. 우리는 쓸 수 있습니다variable_conflict이런 식으로 설정 :

함수 만들기 stamp_user (id int, 댓글 텍스트) void를 $$로 반환합니다.

명령 문자열에서 변수 대체가 발생하지 않습니다execute또는 그 중 하나사용,섹션.

가변 대체는 현재에서만 작동합니다select,삽입,업데이트삭제기본 SQL 엔진이기 때문에 명령executeit.

39.10.2. 캐싱 계획

thepl/pgsql통역사pl/pgsql진술SQL표현 및SQL함수에 사용 된 명령은 그렇지 않습니다

각 표현 및SQL명령에서 처음 실행됩니다pl/pgsql통역사는 명령을 구문 분석하고 분석하여 a를 생성합니다SPI관리자SPI_PREPARE함수. 후속 방문

pl/pgsql(또는 그 이상pl/pgsql가변 값)를 사용 할 수 있습니다제네릭그렇지 않은 계획pl/pgsql변수에 참조. 만약

때문에pl/pgsql저장pl/pgsql함수는 동일한 것을 참조해야합니다pl/pgsql execute진술 - 가격에

레코드 변수의 변이 성 특성은 다른 것을 제시합니다execute이 문제를 해결하는 데 사용할 수 있습니다

동일한 함수가 둘 이상의 트리거로 사용되는 경우pl/pgsql준비 및발생하더라도

마찬가지로 다형성 인수 유형을 갖는 기능에는 a가 있습니다

Statement Caching은 때때로 놀라운 영향을 미칠 수 있습니다

함수 생성 logfunc1 (logtxt 텍스트)은 $$로 void를 반환합니다

and :

함수 생성 logfunc2 (logtxt 텍스트)는 void를 $$로 반환합니다

의 경우logfunc1, ThePostgreSQLMain Parser는 알고 있습니다삽입'now'타임 스탬프,의 대상 열이기 때문에logtable는 그 유형입니다. 따라서,'now'A로 변환됩니다타임 스탬프삽입는 분석 한 다음 모든 것에 사용됩니다logfunc1now ()또는current_timestamp기능.

의 경우logfunc2, The스포츠 토토메인 파서가합니다'now'텍스트문자열 포함now. 다음으로 현지인에게 임무를 수행하는 동안CURTIME, Thepl/pgsql인터프리터는이 문자열을 발사합니다타임 스탬프전화하여 타이핑text_outTimestamp_in변환 기능.now ()함수는 여전히 더 나은 아이디어가 될 것입니다.