23.8.7.46 mysql_next_result()
int mysql_next_result(MYSQL *mysql)
설명
이 함수는 하나의 명령문 문자열로 지정된 여러 문을 실행하거나 여러 결과 집합을 반환 할 수있는 CALL
문을 사용하여 저장 프로 시저를 실행하는 경우에 사용합니다.
mysql_next_result()
는 다음 문 결과를 읽고 그 이상의 결과가 존재하는지 여부를 나타내는 상태를 반환합니다. mysql_next_result()
가 에러를 돌려 주었을 경우, 그 이상의 결과가 없습니다.
mysql_next_result()
의 각 호출하기 전에 현재의 문이 결과 세트를 반환 (결과의 상태뿐만 아니라) 문이면 명령문에 mysql_free_result()
를 호출 할 필요가 있습니다.
mysql_next_result()
를 호출 한 뒤 연결 상태는 다음 문에 대해 mysql_real_query()
또는 mysql_query()
를 호출했을 경우의 수 있습니다. 이는 mysql_store_result()
, mysql_warning_count()
, mysql_affected_rows()
등을 호출 할 수 있다는 것을 의미합니다.
프로그램에서 CALL
문을 사용하여 저장 프로 시저를 실행하는 경우 CLIENT_MULTI_RESULTS
플래그가 활성화되어 있어야합니다. 이것은 각 CALL
에 의해 프로 시저 내에서 실행되는 문에 의해 반환 될 수있는 결과 세트 이외에 호출 상태를 나타 내기위한 결과가되기 때문입니다. CALL
는 여러 결과를 반환 할 수 있기 때문에 mysql_next_result()
를 호출하는 루프를 사용하여 그들을 처리하고 그 이상의 결과가 있는지를 판단합니다.
CLIENT_MULTI_RESULTS
는 mysql_real_connect()
를 호출 할 때 CLIENT_MULTI_RESULTS
플래그 자체를 전달하여 명시 적으로 또는 CLIENT_MULTI_STATEMENTS
을 전달하여 암시 적으로 사용하는 (따라서 CLIENT_MULTI_RESULTS
도 적용됩니다) 수 있습니다. MySQL 5.6에서는 CLIENT_MULTI_RESULTS
은 기본적으로 활성화되어 있습니다.
mysql_more_results()
를 호출 해, 그 이상의 결과가 있는지를 테스트 할 수 있습니다. 그러나이 함수는 연결 상태를 변경하지 않기 때문에 그것이 true를 반환하면 더욱 mysql_next_result()
를 호출하여 다음과 같은 결과를 진행할 필요가 있습니다.
mysql_next_result()
의 사용 방법을 보여주는 예제는 섹션 23.8.17 "여러 문 실행의 C API 지원" 을 참조하십시오.
반환 값
반환 값 | 설명 |
---|---|
0 | 성공 그 이상의 결과가 있습니다 |
-1 | 성공 그 이상의 결과가 존재하지 않습니다 |
0보다 큰 | 오류가 발생했습니다 |
오류
CR_COMMANDS_OUT_OF_SYNC
명령이 잘못된 순서로 실행되었습니다. 예를 들어 이전 결과 세트에
mysql_use_result()
를 호출하지 않은 경우.CR_SERVER_GONE_ERROR
MySQL 서버가 존재하지 않습니다.
CR_SERVER_LOST
서버에 대한 연결이 쿼리 중에 손실되었습니다.
CR_UNKNOWN_ERROR
알 수없는 오류가 발생했습니다.