PL/pgSQL은 블록 구조 언어. 함수의 전체 텍스트 정의는 다음과 같아야 합니다.차단. 블록은 다음과 같이 정의됩니다:
[ <<라벨 ] [선언선언 ] 시작문장END;
블록 내의 각 선언과 각 명령문은 세미콜론으로 종료됩니다.
모든 키워드와 식별자는 대문자를 혼합하여 쓸 수 있습니다. 그리고 소문자. 식별자는 암시적으로 다음으로 변환됩니다. 큰따옴표를 사용하지 않는 한 소문자입니다.
댓글에는 두 가지 유형이 있습니다.PL/pgSQL. 이중 대시(--)는 다음의 끝까지 확장되는 주석을 시작합니다. 라인. 갑/*차단 댓글을 시작합니다 다음 발생으로 확장됩니다.*/. 블록 주석은 중첩될 수 없지만 이중 주석입니다. 대시 주석은 블록 주석과 이중 주석으로 묶을 수 있습니다. 대시는 블록 주석 구분 기호를 숨길 수 있습니다./*그리고*/.
블록의 명령문 섹션에 있는 모든 명령문은 다음과 같을 수 있습니다.하위 블록. 하위 블록은 다음 용도로 사용할 수 있습니다. 논리적 그룹화 또는 변수를 작은 그룹으로 지역화하기 위해 진술.
다음 선언 섹션에 선언된 변수 블록은 매번 기본값으로 초기화됩니다. 블록은 함수 호출당 한 번만 입력되는 것이 아닙니다. 에 대한 예:
CREATE FUNCTION somefunc()는 정수를 '로 반환합니다.
선언
수량 정수 := 30;
시작
인상 공지 ''여기의 수량은 %입니다'', 수량; -- 여기의 수량은 30입니다.
수량 := 50;
--
-- 하위 블록 생성
--
선언
수량 정수 := 80;
시작
인상 공지 ''여기의 수량은 %입니다'', 수량; -- 여기의 수량은 80입니다.
끝;
인상 공지 ''여기의 수량은 %입니다'', 수량; -- 여기의 수량은 50입니다.
반품 수량;
끝;
' 언어 plpgsql;
사용법을 혼동하지 않는 것이 중요합니다.시작/END그룹화용 의 진술PL/pgSQL와 함께 트랜잭션 제어를 위한 데이터베이스 명령입니다.PL/pgSQL's시작/END전용입니다 그룹화; 트랜잭션을 시작하거나 종료하지 않습니다. 기능과 트리거 프로시저는 항상 트랜잭션 내에서 실행됩니다. 외부 쿼리에 의해 설정됨 --- 시작하거나 커밋할 수 없습니다. 거래, 이후PostgreSQL중첩된 트랜잭션이 없습니다.