2011-02-22 9 views
2

다른 루프 내에서 루프를 만들 수 있습니까? (중첩 된 루프) 포스트 그레스. 아래와 비슷한 것 :PostgreSQL : 중첩 루프

WHILE rowCounter < totalRows LOOP 

    FETCH NEXT FROM retailerIdCursor INTO retailerID; 

    --FOR i IN 1..8 LOOP 
    --WHILE i < 8 LOOP 
    LOOP 
     UPDATE sales_fact 
     SET retailer_id = retailerID 
     WHERE sales_id = rowCounter; 

     EXIT WHEN i > 8; 
    END LOOP; 

    rowCounter = 1+ rowCounter; 

END LOOP; 
+3

왜 이런 식으로해야할까요? 단일 세트 기반의 'UPDATE'로 다시 작성하는 것이 간단해야합니다. –

+1

예, 가능합니다. 전혀 문제가 없습니다. 그런데 왜 니가 필요하다고 생각하니? 중첩 루프는 느리고 느립니다. –

+2

그냥 시도해 보시지 않겠습니까? –

답변

0
+0

안녕하세요, 답변 주셔서 감사합니다. 나는 실제로 문서를 읽었습니다. 하지만 중첩 루프를 사용하면 원하는 결과를 얻을 수 없습니다. 다시 한번 감사드립니다. –

+0

중첩 루프는 쓸모가 없습니다. 그냥 간단한 WHERE sales_id IN (1,2,3,4,5,6,7,8)을 사용하십시오. 이제 8 가지 조건에 대해 단일 UPDATE 만 필요합니다. –

2

나는 프랭크 제안했다 당신이 단지

UPDATE sales_fact 
    SET retailer_id = retailerID 
WHERE sales_id IN(1,2,3,4,5,6,7,8); 

을 쓸 수없는 이유를 실패합니다.

retailerId를 선택하는 문장에 따라 외부 루프도 필요하지 않을 수도 있습니다.