| PostgreSQL 9.1.24 문서 | ||||
|---|---|---|---|---|
| 사설 토토 : 문서 : 9.1 : 개요 | 위로 | 39장.토토 꽁 머니/pgSQL - SQL절차적 언어 | 다음 | |
토토 꽁 머니/pgSQL은 블록 구조 언어. 함수의 전체 텍스트 정의는 다음과 같아야 합니다.차단. 블록은 다음과 같이 정의됩니다:
[ <<라벨 ] [선언선언 ] 시작하다문장END [ 라벨 ];
블록 내의 각 선언과 각 명령문은 세미콜론으로 끝납니다. 다른 블록 안에 나타나는 블록 블록 뒤에는 세미콜론이 있어야 합니다.END, 위에 표시된 것처럼; 그러나 최종END함수 본문을 마무리하는 데에는 세미콜론이 필요하지 않습니다.
팁:일반적인 실수는 세미콜론을 쓰는 것입니다 직후시작. 이것은 올바르지 않으며 구문 오류가 발생합니다.
A 라벨다음의 경우에만 필요합니다. 에서 사용할 블록을 식별하고 싶습니다.종료문장, 또는 블록에 선언된 변수 라벨이 뒤에 제공되는 경우END, 이는 다음의 라벨과 일치해야 합니다. 블록의 시작.
모든 키워드는 대소문자를 구분하지 않습니다. 식별자는 암시적으로 큰따옴표를 사용하지 않는 한 소문자로 변환됩니다. 일반 SQL 명령입니다.
댓글은 다음과 같은 방식으로 작동합니다.토토 꽁 머니/pgSQL일반 SQL과 같은 코드입니다. 더블 대시(--)는 확장된 댓글을 시작합니다. 줄 끝까지. 에이/*을 시작합니다 일치하는 항목으로 확장되는 블록 주석*/. 차단 댓글이 중첩됩니다.
블록의 명령문 섹션에 있는 모든 명령문은 다음과 같을 수 있습니다.하위 블록. 하위 블록은 다음 용도로 사용할 수 있습니다. 논리적 그룹화 또는 변수를 작은 그룹으로 지역화하기 위해 진술. 서브블록 마스크에 선언된 변수 해당 기간 동안 외부 블록의 비슷한 이름의 변수 하위 블록; 하지만 다음과 같은 경우에는 어쨌든 외부 변수에 액세스할 수 있습니다. 블록 라벨로 이름을 한정합니다. 예를 들어:
CREATE FUNCTION somefunc() 정수를 $$로 반환합니다.
<< 외부 블록 
선언하다
    수량 정수 := 30;
시작하다
    RAISE NOTICE '여기의 수량은 %입니다.', 수량;  -- 30개를 인쇄합니다.
    수량 := 50;
    --
    -- 하위 블록 생성
    --
    선언하다
        수량 정수 := 80;
    시작하다
        RAISE NOTICE '여기의 수량은 %입니다.', 수량;  -- 80을 인쇄합니다.
        RAISE NOTICE '여기의 외부 수량은 %입니다.', Outerblock.Quantity;  -- 50개를 인쇄합니다.
    끝;
    RAISE NOTICE '여기의 수량은 %입니다.', 수량;  -- 50개를 인쇄합니다.
    반품 수량;
끝;
$$ 언어 plpgsql;
  참고:실제로 숨겨진 것이 있습니다"외부 블록"모든 사람의 몸을 둘러싸고토토 꽁 머니/pgSQL함수. 이것 블록은 함수의 매개변수 선언을 제공합니다. (있는 경우) 및 다음과 같은 특수 변수도 포함됩니다.발견(참조섹션 39.5.5). 외부 블록에는 해당 기능의 라벨이 붙어 있습니다. 이름은 매개변수와 특수 변수가 함수 이름으로 한정됩니다.
사용법을 혼동하지 않는 것이 중요합니다.시작/END그룹화용 의 진술토토 꽁 머니/pgSQL와 함께 트랜잭션 제어를 위한 비슷한 이름의 SQL 명령입니다.토토 꽁 머니/pgSQL's시작/END전용입니다 그룹화; 트랜잭션을 시작하거나 종료하지 않습니다. 기능과 트리거 프로시저는 항상 트랜잭션 내에서 실행됩니다. 외부 쿼리에 의해 설정됨 - 해당 쿼리를 시작하거나 커밋할 수 없습니다. 트랜잭션을 실행할 컨텍스트가 없기 때문에 트랜잭션 in. 그러나를 포함하는 블록예외절은 효과적으로 영향을 주지 않고 롤백할 수 있는 하위 트랜잭션 외부 거래. 이에 대한 자세한 내용은 다음을 참조하세요.섹션 39.6.6.