23.8.11.28 mysql_stmt_store_result()
int mysql_stmt_store_result(MYSQL_STMT *stmt)
설명
결과 집합은 SELECT
, SHOW
, DESCRIBE
, 그리고 EXPLAIN
등의 SQL 문 실행 된 준비된 명령문에 대해 mysql_stmt_execute()
를 호출하여 생성됩니다. 기본적으로 성공적으로 실행 된 준비된 명령문의 결과 세트는 클라이언트에서 버퍼되지 않고, mysql_stmt_fetch()
는 그들을 서버에서 한 번에 하나씩 가져옵니다. 클라이언트에서 전체 결과 집합을 버퍼하려면, mysql_stmt_bind_result()
에 의해 데이터 버퍼를 바인딩 한 뒤, 한편 mysql_stmt_fetch()
를 호출하여 행을 인출하기 전에 mysql_stmt_store_result()
를 호출합니다. (예를 들어, 섹션 23.8.11.11 "mysql_stmt_fetch ()" 를 참조하십시오.)
mysql_stmt_data_seek()
, mysql_stmt_row_seek()
또는 mysql_stmt_row_tell()
를 호출하지 않으면 mysql_stmt_store_result()
는 결과 집합의 처리 옵션입니다. 그 함수는 시크 가능한 결과 세트가 필요합니다.
결과 세트를 생성하지 않는 SQL 문 실행 후 mysql_stmt_store_result()
를 호출 할 필요는 없지만 그러한 경우에 피해를 주거나 눈에 띄는 성능 문제를 발생 시키거나하는 것은 없습니다. mysql_stmt_result_metadata()
가 NULL
을 반환 여부를 체크하여 문이 결과 세트를 생성 여부를 확인할 수 있습니다. 자세한 내용은 섹션 23.8.11.23 "mysql_stmt_result_metadata ()" 를 참조하십시오.
MySQL은 기본적으로 mysql_stmt_store_result()
에서 모든 컬럼의 MYSQL_FIELD->max_length
를 계산하지 않습니다. 이를 계산하면 mysql_stmt_store_result()
가 상당히 느려질 수 있으며, 대부분의 응용 프로그램 max_length
을 필요로하지 않기 때문입니다. max_length
를 업데이트 할 필요가있는 경우 mysql_stmt_attr_set(MYSQL_STMT, STMT_ATTR_UPDATE_MAX_LENGTH, &flag)
를 호출 해 이것을 가능하게 할 수 있습니다. 섹션 23.8.11.3 "mysql_stmt_attr_set ()" 를 참조하십시오.
반환 값
성공의 경우는 제로. 오류가 발생한 경우 0이 아닌.
오류
CR_COMMANDS_OUT_OF_SYNC
명령이 잘못된 순서로 실행되었습니다.
CR_OUT_OF_MEMORY
메모리 부족.
CR_SERVER_GONE_ERROR
MySQL 서버가 존재하지 않습니다.
CR_SERVER_LOST
서버에 대한 연결이 쿼리 중에 손실되었습니다.
CR_UNKNOWN_ERROR
알 수없는 오류가 발생했습니다.