2012-06-20 3 views
2

내가 행의 수를 반환하고 이러한 VBA에서 배열에 삽입되는 SQL 문이 발생합니다. 그런 다음 배열을 반복하여 스프레드 시트 행에 붙여 넣습니다.분할 SQL은

나는 그러므로 내가 배치에 붙여 넣기를하고 싶으면, 메모리 부족 실행하고 있습니다.

나는 너무 오래 내가 메모리 문제를 피할 수있는 데이터를 수집하기 위해 동일한 SQL 쿼리마다 실행 상관하지 않습니다. 어떻게해야합니까? 내 SQL에서는 LIMIT를 사용했지만, 여기서는 첫 번째 ... 1000을 선택한다고 말하고 싶습니다. 다음 다음 1000 등

답변

1

나는이 개 매개 변수를 전달하여 그 기본 페이지 매김 기능을 사용하여 호출 할 저장된 프로 시저를 만드는 데 가장 쉬운 방법을 발견했습니다.

체크 아웃이 질문 : 당신이 다시 어떤 결과를 얻을하지 않습니다 때까지 How to do pagination in SQL Server 2008

하는 프로그래밍 방식으로 저장된 프로 시저를 호출하는 경우, 당신은 while 루프를 사용할 수 있습니다.

1

는 다음을 수행 "? 1000 ... 먼저하고 다음 1000을 선택"다음

제한은 1000 원입니다 및 배치가 0에서 시작하는 것
SELECT * FROM table 
LIMIT <limit> 
OFFSET <batch * limit> 

페이지 요청 된 페이지 당 행 : 각 통화에 대해 1 씩 증가는

+0

에게 정확히 무엇을합니까? SQL 코드를 여러 번 호출합니까? 어떻게/그것으로 위치를 추적합니까? – mezamorphic

+0

답변을 주셔서 감사합니다. 한번 완료되면 메모리에서 해제 할 수있는 한 번에 1000 개의 행을 가져옵니다 (각 배치마다). 일괄 처리를 저장하기 위해 for 루프를 간단히 수행 할 수 있습니다. limit = 1000; (; 배치

+3

이 MySQL의 고유의 것입니다 - OP는 질문에 SQL 서버를 지정합니다. – Bridge