PostgreSQL 7.2.8 선적 서류 비치 | ||
---|---|---|
이전 | 23 장pl/pgsql - SQL절차 적 언어 | 101PostgreSQL : 문서 : 7.2 : 사설 토토 사이트식49 |
모든 사설 토토 사이트식에 사용 된pl/pgsql진술은 다음을 사용하여 처리됩니다 서버의 일반 SQL 집행자. 포함 된 사설 토토 사이트 상수는 실제로 런타임 평가가 필요할 수 있습니다 (예 :'now'용타임 스탬프type) 따라서가 불가능합니다.pl/pgsql실제 식별을위한 파서 NULL 키워드 이외의 상수 값. 모든 사설 토토 사이트이 있습니다 쿼리를 실행하여 내부적으로 평가
select사설 토토 사이트
사용SPI관리자. ~ 안에 사설 토토 사이트, 발생pl/pgsql가변 식별자가 교체됩니다 매개 변수와 변수의 실제 값이 전달됩니다. 매개 변수 배열의 집행자에게. 이것은 쿼리를 허용합니다 선택을 한 번만 준비한 다음 후속 평가.
에 의해 수행 된 평가PostgreSQL메인 파서에는 부작용이 있습니다 일정한 값의 해석에. 세부적으로 a 이 두 기능의 차이점 :
함수 생성 logfunc1 (텍스트) 타임 스탬프를 반환합니다. 선언하다 $ 1에 대한 logtxt 별칭; 시작하다 Logtable 값에 삽입 (logtxt, 'now' '); ``지금 '' '을 반환합니다. 끝; '언어'plpgsql ';
and
함수 생성 logfunc2 (텍스트) Timestamp를 다시 반환합니다. 선언하다 $ 1에 대한 logtxt 별칭; 곡선 타임 스탬프; 시작하다 큐 타임 : = ''now ''; Logtable 값 (logtxt, curtime)에 삽입; 큐 타임 리턴; 끝; '언어'plpgsql ';
의 경우logfunc1 ()
, ThePostgreSQLMain Parser는 알고 있습니다
삽입 계획을 준비 할 때 문자열'now'타임 스탬프이기 때문에logtable
그 유형입니다. 따라서, 그것은
현재로서는 일정하게 만들어 주고이 지속적인 가치
그런 다음의 모든 호출에 사용됩니다.logfunc1 ()
백엔드 수명 동안.
말할 것도없이 이것은 프로그래머가 원했던 것이 아니라고 말할 필요가 없습니다.
의 경우logfunc2 ()
, ThePostgreSQL메인 파서는 그렇지 않습니다
어떤 유형을 알고'now'따라서 유형의 데이터 값을 반환합니다텍스트문자열 포함'now'. 다음으로 현지인에게 임무를 수행하는 동안
변하기 쉬운CURTIME
, thepl/pgsql인터프리터는이 문자열을 캐스트합니다
그만큼타임 스탬프전화로 입력하십시오text_out ()
andtimestamp_in ()
변환 기능.
따라서 계산 된 타임 스탬프는 각 실행에 따라 업데이트됩니다.
프로그래머가 기대합니다.
레코드 변수의 변이 가능한 특성은 문제를 제시합니다. 이 연결. 레코드 변수의 필드가 사용되는 경우 사설 토토 사이트 또는 진술, 필드의 데이터 유형은 하나의 호출과 동일한 사설 토토 사이트 사이의 변화는 사설 토토 사이트식은 존재하는 데이터 유형을 사용하여 계획됩니다. 사설 토토 사이트이 처음 도달했을 때. 이걸 명심하십시오 하나 이상의 이벤트를 처리하는 트리거 절차 작성 테이블. (실행은이 문제를 해결하는 데 사용될 수 있습니다. 필요한.)