이 문서는 지원되지 않는 버전의 롤 토토을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다스포츠 토토 사이트 : 문서 : 17 : 41.2. pl/pgsql의 스포츠 토토 사이트버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

37.3. 의 구조pl/pgsql

pl/pgsqlis 블록 구조적 언어. 함수의 전체 텍스트 정의는이어야합니다.블록. 블록은 정의 :

[ <<레이블 ]
[선언선언 ]
시작하다진술끝;

블록 내의 각 선언 및 각 진술은 다음과 같습니다 세미콜론에 의해 종료되었습니다.

모든 키워드와 식별자는 혼합 상단으로 작성할 수 있습니다. 그리고 소문자. 식별자는 암시 적으로 변환됩니다 두 번 인용되지 않는 한 소문자.

두 가지 유형의 주석이 있습니다pl/pgsql. 더블 대시 (--) 끝까지 연장되는 댓글을 시작합니다. 라인. 에이/*블록 주석을 시작합니다 다음 번 발생하는까지 확장됩니다.*/. 블록 댓글은 중첩 될 수는 없지만 두 배입니다 대시 댓글은 블록 댓글과 더블로 둘러싸여 있습니다. 대시는 블록 주석을 숨길 수 있습니다/*and*/.

블록의 진술서 섹션의 모든 진술은 A가 될 수 있습니다.서브 블록. 서브 블록을 사용할 수 있습니다 논리적 그룹화 또는 소수 그룹에 변수를 현지화하기 위해 진술.

선언 섹션에서 선언 된 변수 a 블록은 매번 기본값으로 초기화됩니다. 함수 호출 당 한 번뿐만 아니라 블록이 입력됩니다. 을 위한 예:

CREATE FUNCTION somefunc() RETURNS integer AS '
DECLARE
    quantity integer := 30;
BEGIN
    RAISE NOTICE ''Quantity here is %'', quantity;  -- Quantity here is 30
    quantity := 50;
    --
    -- Create a subblock
    --
    DECLARE
        quantity integer := 80;
    BEGIN
        RAISE NOTICE ''Quantity here is %'', quantity;  -- Quantity here is 80
    END;

    RAISE NOTICE ''Quantity here is %'', quantity;  -- Quantity here is 50

    RETURN quantity;
END;
' LANGUAGE plpgsql;

사용을 혼동하지 않는 것이 중요합니다시작/END그룹화 진술PL/PGSQL트랜잭션 제어를위한 데이터베이스 명령.pl/pgsql's시작/END그룹화; 그들은 거래를 시작하거나 종료하지 않습니다. 기능 및 트리거 절차는 항상 거래 내에서 실행됩니다 외부 쿼리에 의해 설정 --- 시작하거나 커밋 할 수 없습니다. 거래, 이후PostgreSQL중첩 된 거래가 없습니다.