저장 프로시저에서 OLEDB를 사용하여 레코드세트를 반환할 수 없는 이유는 무엇입니까?
나는 임시 테이블에서 작동하는 프로그램을 작성한 적이 있습니다(주요 기능은 각 카테고리의 상위 10개 레코드를 검색하는 것입니다).
저장 프로시저는 ODBC를 사용하여 데이터베이스에 정상적으로 연결하고 올바른 결과를 얻을 수 있습니다. 그러나 oledb를 사용하여 연결하면 레코드 세트를 반환할 수 없으며 작업이 레코드 세트를 반환하면 오류 메시지가 나타납니다.
ADODB.Recordset 오류 '800a0e78'
개체가 닫혀 있으면 응용 프로그램에서 요청한 작업이 허용되지 않습니다.
그것은 나를 당황하게 한다. 왜 그래?
이는 OLEDB와 ODBC 사이에 차이가 있기 때문입니다. 즉, ASP가 ODBC에서 레코드 세트를 얻을 때 ODBC는 테이블 생성으로 생성된 레코드를 필터링합니다.
또는 삽입은 위치만 차지하지만 어떤 작업도 수행할 수 없는 일부 레코드 세트를 생성합니다. ASP가 OLEDB에서 레코드 세트를 가져올 때 OLEDB는 그렇지 않습니다.
이러한 레코드 집합은 필터링되지 않습니다. 따라서 저장 프로시저에서 레코드세트를 반환하기 전에 set nocount on을 실행해야 합니다.
저장 프로시저에서는 레코드 집합을 반환할 수 없습니다. 레코드 집합을 반환하려면 set nocount off를 먼저 실행해야 합니다. 이런 식으로 문제가 해결됩니다.