Oracle 상에서 "Select * from table_name" query시 다른 Table 의 RecordCount는 정상적이나, Table 의 특정 필드가 memo일때(size 2000) 는 -1를 return 합니다. 여러 방법을 시도하였으나, "Select Count(*) from table_name" 밖에는 ...
김영대
•
1999.09.28 20:50
BLOB field가 포함된 Query의 RecordCount 를 참조하면 -1 또는
"그런 동작은 지원하지 않습니다" 라는 에...
"그런 동작은 지원하지 않습니다" 라는 에러 메시지를 만나게 됩니다
이런 현상은 공식적인 버그로 알려져 있습니다
Query한 레코드가 있는지를 검사할때
if Query1.RecordCount > 0 then...
이런 식으로 사용하게 되는데 이런 방법보다는
if Query1.Eof and Query1.Bof then...
식으로 사용하시는것이 효율적입니다
이유는 RecordCount를 참조하게 되면 Query한 레코드를
모두 PC로 받아온 다음에 로컬에서 갯수를 세기 때문입니다
그래서 당연히 속도가 떨어집니다
BLOB 필드가 포함된 레코드의 건수를 셀때는
말씀하신 것처럼 Count() 오라클 함수를 사용하시는것이
제일 빠른걸로 알려져 있습니다(레코드의 건수만 받아오므로...)
또는 Query1.Last한 다음에 Query1.RecordCount 를 참조해보시면
정확한 값이 넘어온다는 애기도 있는데 저도 이 방법은 사용한적이
없어서 정확한지는 모르겠습니다