토토 사이트 순위 구조는 아마도 가장 유용 할 것입니다 (및pl/pgsql.pl/pgsql의 토토 사이트 순위토토 사이트 순위매우 유연한 데이터
반환 할 수있는 두 가지 명령이 있습니다.return및다음 반환.
return표현;
return표현식표현발신자에게. 이 양식은입니다pl/pgsql세트를 반환하지 않는 함수.
스칼라 유형을 반환 할 때 모든 표현식을 사용할 수 있습니다.표현.
출력 매개 변수로 함수를 선언 한 경우 쓰기return표현이없는. 그만큼
기능을 반환하도록 선언 한 경우void, areturn진술return.
함수의 반환 값은 정의되지 않은 상태로 남겨질 수 없습니다.return문, 런타임 오류가 발생합니다. 이 제한이 있습니다void. 그 경우return명령문이 자동으로됩니다
다음 반환표현;
언제pl/pgsql함수setof약간, 따라야 할 절차다음 반환명령, 그리고 최종return인수가없는 명령은반환스칼라 및 복합 데이터와 함께 사용할 수 있습니다"테이블"결과가 반환됩니다.
다음 반환실제로는 그렇지 않습니다pl/pgsql함수. 연속다음 반환명령이 실행되고 결과 세트가 쌓입니다. 최종return
출력 매개 변수로 함수를 선언 한 경우 쓰기다음 반환표현이없는.기록 설정여러 출력 매개 변수가있을 때 또는setof약간유형의 출력 매개 변수가 하나만있을 때약간, a
사용하는 기능다음 반환다음 방식으로 호출해야합니다.
select * from some_func ();
즉, 함수는 a의 테이블 소스로 사용해야합니다.From절.
참고 :현재의 구현다음 반환forpl/pgsql전체 결과를 저장합니다pl/pgsql함수는 매우 생성됩니다pl/pgsql사용자가 정의 할 수 있습니다work_mem구성 변수. 가지고있는 관리자
if진술을 실행할 수 있습니다pl/pgsql5 가지 형태의if:
if ... then
if ... 그런 다음 ... else
if ... 그런 다음 ... else if
if ... 그런 다음 ... Elsif ... 그런 다음 ...
if ... 그런 다음 ... elseif ... 그런데 ...
if부울-표현the진술END IF;
if-then진술은 다음과 같습니다if. 진술the및종료 if조건이 있으면 실행됩니다
예 :
if v_user_id <> 0입니다
if부울-표현the진술else진술END IF;
if-then-else진술이 추가if-then
예 :
Parentid가 null 또는 parentid = ''인 경우 = ''
v_count> 0이면
if진술은 중첩 될 수 있습니다
demo_row.sex = 'm'이면
이 양식을 사용하면 실제로 중첩if내부의 진술else외부의 일부if진술. 따라서 하나가 필요합니다종료 if각 중첩에 대한 명령문if그리고 부모를위한 하나if-else. 이것은 실행 가능하지만 지루한 성장합니다
if부울-표현the진술 [elsif부울-표현the진술 [elsif부울-표현the진술 ...]]else진술 ]
if-then-elsif-else제공 aif-then-else-if-then명령이지만 하나만종료 if필요합니다.
여기 예입니다.
if number = 0이면
elseifelsif.
withloop, 출구, 계속, while및for진술, 당신은 당신의 것을 준비 할 수 있습니다pl/pgsql반복 할 기능 a
[ <<레이블 ]진술엔드 루프 [ 레이블 ];
loop무조건 정의출구또는return진술. 선택 사항레이블출구및계속어떤 루프를 지정하기위한 중첩 루프의 명령문
출구 [ 레이블 ] [언제표현 ];
NO레이블가 제공됩니다엔드 루프다음에 실행됩니다. 만약에레이블가 주어져 있어야합니다END.
if언제루프가 지정되어 있습니다표현사실입니다. 그렇지 않으면 토토 사이트 순위하십시오출구.
출구모든 유형과 함께 사용할 수 있습니다시작블록,출구다음을 통제합니다
예 :
루프
계속 [ 레이블 ] [언제표현 ];
NO레이블가 제공됩니다레이블가 있으며, 그것을 지정합니다
if언제다음은 지정되어 있습니다표현사실입니다. 그렇지 않으면 토토 사이트 순위하십시오계속.
계속모두와 함께 사용할 수 있습니다
예 :
루프
[ <<레이블 ]표현loop진술엔드 루프 [ 레이블 ];
thewhile진술 반복 a
예 :
while Voll_owed> 0 및 Gift_certificate_balance> 0 루프
[ <<레이블 ]이름in [Reverse] 표현 .. 표현 [by표현 ] loop진술엔드 루프 [ 레이블 ];
이 형태의for루프를 만듭니다이름자동으로 정의됩니다정수내부에만 존재합니다by절by절. 만약에Reverse다음 단계가 지정됩니다
정수의 일부 예for루프 :
1.10 루프의 i
하한이 상한보다 큰 경우 (또는Reversecase), the
다른 유형의 사용for루프,
[ <<레이블 ]대상in쿼리loop진술엔드 루프 [ 레이블 ];
the대상는 기록입니다대상IS쿼리그리고 루프 본체가 실행됩니다
함수 생성 cs_refresh_mviews () 정수를 $$로 반환합니다
루프가 an에 의해 종료 된 경우출구문서, 마지막으로 할당 된 행 값은입니다
the쿼리이 유형에서 사용됩니다for명령문은 모든 SQL 일 수 있습니다select가 가장 일반적인 경우이지만 당신도 할 수도 있습니다삽입, 업데이트또는삭제반환절. 일부 유틸리티설명작동합니다
thefor-in-Execute성명서입니다
[ <<레이블 ]대상실행text_expressionloop진술엔드 루프 [ 레이블 ];
이것은 소스 쿼리를 제외하고는 이전 형식과 같습니다.for루프. 이것은 프로그래머가 속도를 선택할 수있게합니다.execute진술.
참고 :thepl/pgsql현재 파서for루프 (정수 또는 쿼리 결과)를 확인하여..괄호 안에 나타납니다in및loop. 만약에..그렇지 않습니다..따라서 가능성이 높습니다"루프 변수 루프를 통과하는 루프 변수는 레코드 여야합니다.오히려
기본적으로 A에서 발생하는 오류pl/pgsql함수는 실행을 중단합니다시작예외절. 구문은 연장입니다시작블록 :
[ <<레이블 ]선언선언 ]진술예외조건 [또는조건 ... ] 그런 다음handler_statements [언제조건 [또는조건 ... ] 그런 다음handler_statements ... ]
오류가 발생하지 않으면이 형태의 블록은 단순히 모든 것을 실행합니다.진술END. 그러나 내에서 오류가 발생하면진술, 추가 처리진술버려졌습니다.예외목록. 목록은 첫 번째를 검색합니다조건오류와 일치합니다handler_statements실행됩니다END. 일치하지 않으면 오류가 전파됩니다예외절예외
the조건이름이 될 수 있습니다Postgre범퍼카 토토 : 문서 : 8.2 : Postgre범퍼카 토토 오류 코드. 카테고리 이름은 해당 범주 내에서 오류와 일치합니다.기타을 제외한 모든 오류 유형과 일치합니다.query_canceled. (가능하지만 종종query_canceledby
선택한 내에서 새로운 오류가 발생하는 경우handler_statements, 잡을 수 없습니다예외조항예외조항을 잡을 수 있습니다.
오류가 AN에 의해 잡히면예외조항,의 로컬 변수pl/pgsql함수는 그대로 유지됩니다
mytab에 삽입 (FirstName, lastName) 값 ( 'Tom', 'Jones');
토토 사이트 순위가 과제에 도달하는 경우y, A로 실패합니다.division_by_zero오류. 이것은 잡힐 것입니다예외절. 가치return성명서x업데이트명령삽입블록 앞의 명령은 롤백되지 않으므로Tom JonesnotJoe.
팁 :an을 포함하는 블록예외절은 훨씬 더 많습니다예외필요없이.
예외 핸들러 내에서sqlstate변수에는 오류 코드가 포함되어 있습니다표 A-1asqlerrm변수에는 오류 메시지가 포함되어 있습니다