>181_word_end< >115_word_end<.23 문서 | ||||
---|---|---|---|---|
>157_word_end< | >159_word_end< | >161_word_end<>162_word_end< - >164_word_end<>165_word_end< | >167_word_end< | >169_word_end< |
>176_word_end<>162_word_end<>178_word_end<>162_word_end<>180_word_end<>181_word_end<>182_word_end<
>187_word_end<>188_word_end<>189_word_end<>169_word_end< >745_word_end<.
>188_word_end<>198_word_end<;
>188_word_end<>198_word_end<식 함수를 종료하고 값을 >745_word_end<합니다>198_word_end<>204_word_end<>162_word_end<>206_word_end<
스칼라 유형을 >745_word_end< 할 때 모든 >198_word_end<식을 사용할 수 있습니다. >198_word_end<식의 결과는 자동으로 캐스트됩니다 과제에 대해 >747_word_end<대로 함수의 리턴 유형. 에게 복합재 (행) 값을 >745_word_end<하려면 레코드를 작성하거나 행 변수로>198_word_end<.
>212_word_end<>188_word_end<>198_word_end<이없는. >687_word_end< 출력 매개 변수 변수의 >69_word_end< 값은 >169_word_end<과 같습니다 반품.
>216_word_end<>217_word_end<>218_word_end<>188_word_end<>364_word_end< 기능을 조기에 종료하는 데 사용될 수 있습니다. 그러나 쓰지 마십시오 >169_word_end< >198_word_end<>188_word_end<.
>224_word_end<>188_word_end<>226_word_end<>217_word_end<>228_word_end<>188_word_end<>230_word_end<
>745_word_end< >169_word_end<>198_word_end<>241_word_end<>242_word_end<;
a>162_word_end<>247_word_end<>248_word_end<>249_word_end<>250_word_end<>169_word_end< >745_word_end<>252_word_end<>253_word_end<>254_word_end<>188_word_end<>256_word_end<>745_word_end< >169_word_end<>258_word_end<>259_word_end<>260_word_end<>188_word_end< query>262_word_end<>169_word_end< >745_word_end<>189_word_end<>188_word_end< query>266_word_end<
>169_word_end< >745_word_end<>189_word_end<>188_word_end< query실제로 돌아 오지 마십시오 기능 - 단순히 단순히 0 이상의 행을 추가합니다. 함수의 결과 세트. 그런 >169_word_end< 실행은 >169_word_end<과 함께 >485_word_end<됩니다 의 >364_word_end<>162_word_end<>273_word_end<>745_word_end< >169_word_end<>252_word_end<>188_word_end< query>277_word_end<>188_word_end<, 논쟁이 없어야하는 원인 기능을 종료하려는 제어 (>252_word_end< 제어 할 수 있습니다. 함수의 끝에 도달).
>281_word_end<>169_word_end< >745_word_end<>198_word_end<이없는. 각 실행에서 출력 매개 변수의 >69_word_end< 값 변수는 최종 >745_word_end<을 위해 저장됩니다. 결과. 기능을 >745_word_end<으로 >802_word_end<해야합니다>284_word_end<다수가있을 때 출력 매개 변수 >252_word_end<>248_word_end<>287_word_end<>288_word_end<>249_word_end<>290_word_end<
>169_word_end<을 사용하는 함수의 예는입니다.>169_word_end< >745_word_end<:
테이블 foo (FOOD INT, FOOSUBID >708_word_end739_word_end<; foo 값 (4, 5, 'Six')에 >739_word_end<; function getAllFoo ()가 foo >248_word_end< foo를 >745_word_end<합니다 $ body $ >802_word_end<하다 r foo%rowtype; >557_word_end<하다 r의 r >489_word_end< >737_word_end< * from foo 여기서 fooid 0 고리 - 여기에서 약간의 처리를 할 수 있습니다 >169_word_end< r >745_word_end<; - >69_word_end< 선택의 >69_word_end< 행을 >745_word_end<합니다 엔드 >481_word_end<; 반품; 끝 $ body $ 언어 'plpgsql'; getallfoo ();에서 * 선택
>298_word_end<>745_word_end< >169_word_end<>252_word_end<>188_word_end< query>302_word_end<>303_word_end<>304_word_end<
>308_word_end<>69_word_end<의 구현>169_word_end< >745_word_end<>189_word_end<>312_word_end<>313_word_end<>162_word_end<>315_word_end<>162_word_end<사용자가 설정 반복 함수를 정의 할 수 있습니다 이 제한이 없습니다. >69_word_end< 요점 디스크에 기록되기 >557_word_end<하는 데이터는 >169_word_end<으로 제어됩니다. >687_word_end<>318_word_end<>319_word_end<
>328_word_end<>329_word_end<>162_word_end<>331_word_end<>328_word_end<:
>328_word_end< >447_word_end< >363_word_end
>328_word_end< >447_word_end< 그런 >169_word_end< >447_word_end< >389_word_end<
>328_word_end< >447_word_end< 그런 >169_word_end< >447_word_end< >389_word_end< >328_word_end<
>328_word_end< >447_word_end< 그런 >169_word_end< >447_word_end< Els>328_word_end< >447_word_end< 그런데 >447_word_end< 또 다른
>328_word_end< >447_word_end< 그런 >169_word_end< >447_word_end< >389_word_end<>328_word_end< >447_word_end< 그런데 >447_word_end< 또 다른
>328_word_end<부울->198_word_end<>363_word_end<>364_word_end<>365_word_end<
>328_word_end<->363_word_end
>376_word_end<
>378_word_end<
>328_word_end<부울->198_word_end<>363_word_end<>364_word_end<>389_word_end<>364_word_end<종료 >328_word_end<;
>328_word_end<->363_word_end
>398_word_end<
Parentid가 null >252_word_end< parentid = ''인 경우 = '' 그 >169_word_end<에 풀 >642_word_end<을 >745_word_end<하십시오. 또 다른 hp_true_filename (parentid) ||를 >745_word_end<합니다 '/'|| 풀 >642_word_end<; 끝 If;
>402_word_end<
>328_word_end<>364_word_end<은 중첩 될 수 있습니다 >169_word_end< 예에서 :
>412_word_end<
>414_word_end<>328_word_end<내부의 >364_word_end<>389_word_end<>418_word_end<>328_word_end<>364_word_end<. 따라서 하나가 필요합니다종료 >328_word_end<>422_word_end<>328_word_end<>424_word_end<>328_word_end<->389_word_end<. 이것은 실행 가능하지만 지루한 성장합니다 확인해야 할 대안이 많이있을 때. 따라서 >169_word_end< 양식.
>328_word_end<>434_word_end<>363_word_end<>364_word_end<[els>328_word_end<부울->198_word_end<>363_word_end<>364_word_end<[els>328_word_end<부울->198_word_end<>363_word_end<>364_word_end< >447_word_end<]>449_word_end<>389_word_end<>364_word_end< >453_word_end<
>328_word_end<->363_word_end
>462_word_end<
>328_word_end< number = 0이면 결과 : = 'Zero'; Els>328_word_end< 번호 0 결과 : = '긍정적'; Els>328_word_end< 번호 <0 결과 : = '부정'; 또 다른 - 흠, 유일한 다른 가능성은 숫자가 null이라는 것입니다. 결과 : = 'null'; 끝 If;
>389_word_end<>328_word_end<els>328_word_end<.
>480_word_end<>481_word_end<, >483_word_end<, >485_word_end<, >487_word_end<및>489_word_end<>364_word_end<, 당신은 당신의 것을 준비 할 수 있습니다>491_word_end<>492_word_end<
[ >499_word_end<>500_word_end< >502_word_end<>364_word_end<엔드 >481_word_end< [ >500_word_end< >508_word_end<
>481_word_end<무>808_word_end<적인 정의 an에 의해 종료 될 때까지 무기한 반복되는 >481_word_end<>483_word_end<>252_word_end<>188_word_end<>364_word_end<. 선택 사항>500_word_end<>483_word_end<>189_word_end<>485_word_end<어떤 >481_word_end<를 지정하기위한 중첩 >481_word_end<의 명령문 >364_word_end<을 적용해야합니다.
>483_word_end< [ >500_word_end< >531_word_end<>532_word_end<부울->198_word_end< >508_word_end<
>328_word_end< no>500_word_end<가 제공됩니다 가장 안쪽 >481_word_end<가 종료되고 >169_word_end<은 >169_word_end<에엔드 >481_word_end<>169_word_end<에 실행됩니다. 만약에>500_word_end<가 주어져 있어야합니다 중첩 >481_word_end<의 전류 >252_word_end< 일부 외부 레벨의 >500_word_end< >252_word_end< >791_word_end<. 그런 >169_word_end< >642_word_end<이 지정된 >481_word_end< >252_word_end< >791_word_end<이 종료됩니다 >481_word_end>791_word_end< 이후의 명령문과 함께 제어가 >485_word_end<됩니다 동>544_word_end<.
>328_word_end<>532_word_end<>481_word_end<가 지정되어 있습니다 종료는에만 발생합니다.부울->198_word_end<사실입니다. 그렇지 않으면, 컨트롤은 이후에 >364_word_end<로 전달됩니다.>483_word_end<.
>483_word_end<모든 유형과 함께 사용할 수 있습니다 >481_word_end<; 무>808_word_end< >481_word_end<와 함께 사용되는 것은 아닙니다. A와 함께 사용하면>557_word_end<>558_word_end<>483_word_end<>169_word_end<을 통제합니다 >791_word_end<의 끝 이후 >364_word_end<.
>398_word_end<
>481_word_end< - 일부 계산 count 0이면 >483_word_end<; - 종료 >481_word_end< 끝 IF; 엔드 >481_word_end<; 고리 - 일부 계산 count 0 일 때 종료; - >157_word_end< 예와 동일한 결과입니다 엔드 >481_word_end<; >557_word_end<하다 - 일부 계산 주식이 100000이면 >483_word_end<; - >557_word_end< >791_word_end<에서 종료됩니다 끝 IF; 끝;
>485_word_end< [ >500_word_end< >531_word_end<>532_word_end<부울->198_word_end< >508_word_end<
>581_word_end<>500_word_end<가 제공됩니다 가장 안쪽 >481_word_end<의 >169_word_end< 반복이 >557_word_end<됩니다. 즉, 모두입니다 >481_word_end< 본체에 남아있는 >364_word_end<은 건너 뜁니다 컨트롤은 >481_word_end< 제어 >198_word_end<식 (있는 경우)으로 돌아갑니다. 다른 >481_word_end< 반복이 필요한지 확인하십시오. 만약에>500_word_end<존재합니다 실행이 될 >481_word_end<의 >500_word_end<을 지정합니다. >485_word_end<되는.
>328_word_end<>532_word_end<>169_word_end<은 지정되어 있습니다 >481_word_end< 반복은에만 >557_word_end<됩니다부울->198_word_end<사실입니다. 그렇지 않으면, 컨트롤은 이후에 >364_word_end<로 전달됩니다.>485_word_end<.
>485_word_end<모두와 함께 사용할 수 있습니다 >481_word_end<의 유형; 무>808_word_end<적인 사용에만 국한되지 않습니다 >481_word_end<.
>398_word_end<
>481_word_end< - 일부 계산 카운트 100의 경우 종료; 카운트 <50을 >485_word_end<하면 >485_word_end<하십시오. - [50 >647_word_end< 100]의 카운트 계산에 대한 일부 계산 엔드 >481_word_end<;
[ >499_word_end<>500_word_end< >611_word_end<부울->198_word_end<>613_word_end<>364_word_end<엔드 >481_word_end< [ >500_word_end< >508_word_end<
>363_word_end<>487_word_end<>364_word_end< 반복 a 만큼 >364_word_end< 순서부울->198_word_end<true로 평가합니다. >198_word_end<식은 >481_word_end<에 각 입력 직전에 확인됩니다. 몸.
>398_word_end<
>487_word_end< Voll_owed 0 및 G>328_word_end328_word_end 481_word_end< - 여기에 일부 계산 엔드 >481_word_end<; >481_word_end<가 완료되지 않은 동안 - 여기에 일부 계산 엔드 >481_word_end<;
[ >499_word_end<>500_word_end< >641_word_end<>642_word_end<>643_word_end<>644_word_end<]>198_word_end< >647_word_end< >198_word_end<[>650_word_end<>198_word_end< ] >613_word_end<>364_word_end<엔드 >481_word_end< [ >500_word_end< >508_word_end<
>661_word_end<>489_word_end<>481_word_end<를 만듭니다 그것은 다양한 >666_word_end< 값을 반복합니다. 변수>642_word_end<>665_word_end<>666_word_end<내부에만 존재합니다 >481_word_end< (변수 >642_word_end<의 기존 정의는 >481_word_end< 내에서 무시). 두 가지 >198_word_end<이 제공됩니다 범위의 하부 및 상한은 >481_word_end<에 들어갑니다. 인 경우>650_word_end<>669_word_end<>650_word_end<절, >481_word_end< 항목에서 다시 한 번 평가됩니다. 만약에>644_word_end<지정된 >169_word_end< 단계 값이 지정됩니다 각 반복 후 추가되지 않고 빼기.
>666_word_end<의 일부 예>489_word_end<>481_word_end< :
I의 경우 1>647_word_end<10 >481_word_end< - >481_word_end< 내에서 1,2,3,4,5,6,7,8,9,10 값을 취할 것입니다. 엔드 >481_word_end<; 반전 10>647_word_end<1 >481_word_end< - >481_word_end< 내에서 10,9,8,7,6,5,4,3,2,1 값을 취할 것입니다. 엔드 >481_word_end<; 반전 10>647_word_end<1 x 2 >481_word_end< - >481_word_end< 내에서 10,8,6,4,2 값을 맡을 것입니다. 엔드 >481_word_end<;
하한이 상한보다 큰 경우 (>252_word_end< 에서>644_word_end<CASE), The >481_word_end< 바디는 전혀 실행되지 않습니다. 오류가 발생하지 않습니다.
a>500_word_end<>687_word_end<>489_word_end<>481_word_end< 그런 >169_word_end< >666_word_end< >481_word_end< 변수는 자격을 갖춘 >642_word_end<으로 참조 할 수 있습니다.>500_word_end<.
>698_word_end<>489_word_end<>481_word_end<, >709_word_end< 결과를 반복하고 조작 할 수 있습니다. 그 데이터는 그 데이터입니다. 구문은 >169_word_end<과 같습니다.
[ >499_word_end<>500_word_end< >641_word_end<>707_word_end<>708_word_end<>709_word_end<>481_word_end<>364_word_end<엔드 >481_word_end< [ >500_word_end< >508_word_end<
>363_word_end<>707_word_end<는 레코드입니다 변수, 행 변수 >252_word_end< 쉼표로 구분 된 스칼라 목록 변수. >687_word_end<>707_word_end<>722_word_end<>709_word_end<그리고 >481_word_end< 본체가 실행됩니다 각 행. 예는 >169_word_end<과 같습니다.
함수 생성 cs_refresh_mviews () >666_word_end<를 $$로 >745_word_end<합니다 >802_word_end<하다 mviews 레코드; >557_word_end<하다 cs_log ( '상쾌한 구체화 된 뷰 >447_word_end<')를 수행합니다. SELECT *의 MVIEWS의 경우 CS_MATERIALIZED_VIEWS ORDER의 SORT_KEY LOOP 주문 - 이제 "mviews"는 cs_materialized_views의 한 레코드를 가지고 있습니다 cs_log ( '새로 고침 구체화 된보기'|| QUOTE_INDEN (mviews.mv_name) || '>447_word_end<'); '잘린 테이블'||를 실행하십시오 quote_ident (mviews.mv_name); '>739_word_end<'||를 실행하십시오 quote_ident (mviews.mv_name) || ''|| mviews.mv_query; 엔드 >481_word_end<; CS_LOG를 수행합니다 ( '재생 구체화 된보기'); >745_word_end< 1; 끝; $$ 언어 plpgsql;
>481_word_end<가 an에 의해 종료 된 경우>483_word_end<문서, 마지막으로 할당 된 행 값은입니다 >481_word_end< 후에도 여전히 액세스 할 수 있습니다.
>363_word_end<>709_word_end<>734_word_end<>489_word_end<>736_word_end<>737_word_end<>738_word_end<>739_word_end<, >741_word_end<>252_word_end<>743_word_end<>744_word_end<>745_word_end<>304_word_end< 일부 유틸리티 와 같은 명령>747_word_end<>748_word_end<
>162_word_end<변수는입니다 >709_word_end< 텍스트로 대체되고 >709_word_end< 계획이 캐시됩니다. 가능한 재사용을 위해섹션 3>119_word_end<0.1및섹션 3>119_word_end<0.2.
>363_word_end<>489_word_end<->708_word_end<->767_word_end<>759_word_end<
[ >499_word_end<>500_word_end< >765_word_end<>707_word_end<>767_word_end<>768_word_end<>481_word_end<>364_word_end<엔드 >481_word_end< [ >500_word_end< >508_word_end<
이것은 소스 >709_word_end<를 제외하고는 >157_word_end< 형식과 같습니다. 문자열 >198_word_end<식으로 지정되며, 이는 평가되고 각 항목에 대한 대체>489_word_end<>481_word_end<. 이것은 프로그래머가 속도를 선택할 수있게합니다. 사전 계획된 >709_word_end< >252_word_end< 동적 >709_word_end<의 유연성 평범한>767_word_end<>364_word_end<.
>787_word_end<>162_word_end<>789_word_end<>557_word_end<>791_word_end<>792_word_end<>304_word_end< 구문은 연장입니다 a에 대한 일반 구문>557_word_end<>791_word_end< :
[ >499_word_end<>500_word_end< >449_word_end<>802_word_end<>802_word_end< ] >557_word_end<하다>364_word_end<>792_word_end< >532_word_end<>808_word_end<[>252_word_end<>808_word_end< >447_word_end< ] 그런 >169_word_end<h>189_word_end[>532_word_end<>808_word_end<[>252_word_end<>808_word_end< >447_word_end< ] 그런 >169_word_end<h>189_word_end >447_word_end< >825_word_end<
오류가 발생하지 않으면>661_word_end< >791_word_end<은 단순히 모든 것을 실행합니다.
>687_word_end<>364_word_end<컨트롤이 >169_word_end< >364_word_end<로 전달됩니다>544_word_end<>831_word_end<>364_word_end<>833_word_end<>364_word_end<>835_word_end<>792_word_end<>837_word_end<>808_word_end<>839_word_end<h>189_word_end
>363_word_end<>808_word_end<>642_word_end<이 될 수 있습니다 에 표시된 사람 중 하나부록 >744_word_end<. 카테고리 >642_word_end<은 해당 범주 내에서 오류와 일치합니다. 특별 >808_word_end< >642_word_end<기타query_canceled. (가능하지만 종종 현명히, 함정query_canceled>650_word_end< >642_word_end<.) >808_word_end< >642_word_end<은 사례에 민감하지 않습니다.
선택한 내에서 새 오류가 발생하면h>189_word_end
오류가 발생하면>792_word_end<절,의 로컬 변수>162_word_end<함수는 그대로 유지됩니다 오류가 발생했을 때였지만 모든 변경 >791_word_end< 내의 영구 데이터베이스 상태가 롤백됩니다. 처럼 예를 들어이 조각을 고려하십시오 :
mytab에 >739_word_end< (FirstName, lastName) 값 ( 'Tom', 'Jones'); >557_word_end<하다 mytab set firstName = 'joe'여기서 lastName = 'Jones'; x : = x + 1; Y : = x / 0; >792_word_end< Division_>650_word_end<_zero가있을 때 'Caught Division_>650_word_end<_Zero'를 통지하십시오. >745_word_end< x; 끝;
스포츠 토토 결과가 할당에 도달 할 때y, A로 실패합니다.division_>650_word_end<_zero오류. 이것은 잡힐 것입니다 >687_word_end<>792_word_end<>304_word_end< 가치 에 >745_word_end<>188_word_end<성명서 의 증분 값이 되십시오x의 효과>741_word_end<명령 롤백되었습니다. >687_word_end<>739_word_end<>791_word_end< 앞의 명령은 다시 롤백되지 않았으므로 최종 결과 데이터베이스에 포함된다는 것입니다.Tom JonesnotJoe 존스.
팁 :an을 포함하는 >791_word_end<>792_word_end<절은 훨씬 더 많습니다 >791_word_end<이없는 >791_word_end<보다 들어가서 나가는 데 비용이 많이 듭니다. 따라서 사용하지 마십시오>792_word_end<필요없이.
>792_word_end< 핸들러 내에서sqlstate변수에는 오류 코드가 포함되어 있습니다 제기 된 >792_word_end<에 해당합니다 (참조표 A-1a 가능한 오류 코드 목록). >687_word_end<sqlerrm변수에는 오류 메시지가 포함됩니다 >792_word_end<와 관련이 있습니다. 이러한 변수는 정의되지 않았습니다 외부 >792_word_end< 처리기.
예 38-1. >792_word_end<>741_word_end</>739_word_end<
이 예제는 >792_word_end< 처리를 사용하여 하나를 수행합니다>741_word_end<>252_word_end<>739_word_end<, 적절하게 :
테이블 생성 db (>708_word_end708_word_end 217_word_end<를 >745_word_end<합니다 $$ >557_word_end<하다 고리 - 먼저 키를 >741_word_end<하십시오 DB SET B = 데이터를 >741_word_end<합니다. 여기서 a = 키; 그럼 발견된다면 반품; 끝 IF; - 거기에 있지 않으므로 키를 >739_word_end<하십시오 - 다른 사람이 동시에 같은 키를 동시에 >739_word_end<하면 -우리는 독특한 키 실패를 얻을 수 있습니다 >557_word_end<하다 db (a, b) 값 (키, 데이터)에 >739_word_end<; 반품; 그때 고유 한 >792_word_end< - 아무것도하지 말고 다시 >741_word_end<를 시도하려면 >481_word_end< 끝; 엔드 >481_word_end<; 끝; $$ 언어 plpgsql; merge_db (1, 'david')를 선택하십시오. merge_db (1, 'dennis')를 선택하십시오.
>157_word_end< | 홈 | >169_word_end< |
기본 >364_word_end< | up | 커서 |