<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />버전 7.0.2 : 2GB 메모리, Windows 7
나는 for 루프를 가지고있다. for 루프 내에서 데이터베이스 연결을 열어 쿼리에 반환 된 테이블을 가져옵니다. 반환 된 테이블은 약 10 열, 1.7M 행입니다. 그런 다음 테이블을 저장하고 닫은 후 다음 테이블로 이동합니다. 문제는 첫 번째 테이블에서 메모리가 방출되지 않는다는 것입니다. 따라서 다음 루프 쿼리에서 레코드를 가져올 때 메모리 예외가 발생합니다. for 루프 내에서 테이블과 메모리를 영구적으로 닫는 방법이 있습니까? Chris 감사합니다.
아래의 코드 스 니펫을 참조하십시오.
나의 목록 = 말 ( 맹공 ( 피 [ "웨이퍼" ] , 지 , "," , "" )) ; // 웨이퍼 번호를리스트에 넣는다.
엔 = N 개 항목 ( 나의 목록 ) ; // 목록에있는 웨이퍼 수를 센다.
...에 대한 ( 나는 = 1 , 나는 <= 엔 , 나는 ++,
waf_id = 나의 목록 [ 나는 ] ;
waf_table = 나의 목록 [ 나는 ] ;
만약 ( 길이 ( waf_id ) > 0 , waf_id = "( '" || waf_id || " ')" ) ;
ls_sql = "고르다 * " ;
ls_sql = ls_sql || "FROM WDBP.dbo.SF_QST" ;
ls_sql = ls_sql || "WHERE WAFER_ID IN" || waf_id ;
보여 주다 ( ls_sql ) ; // 로그에 SQL 문을 표시합니다.
OpenDatabase ( "DSN = WDBP; UID = WDFREP; PWD = wdfrep;" , ls_sql , waf_table ) ; // 데이터베이스에 쿼리합니다.
dt = 데이터 테이블 ( waf_table ) ;
파일 이름 = waf_table || ".jmp";
보여 주다 (파일 이름);
닫기 (dt, save (filename));
) ;
승인. 루프의 끝에서 "닫기 (dt, save (filename))"다음에 "wait (5)"명령을 배치하면 문제가 해결됩니다. JMP는 스크립트가 추가 처리를하기 전에 파일 저장을 완료하지 않았습니다.
나는 몇 가지 테스트를 수행하여 이것을 발견하고, 바보 운.