기존의 stored procedure가 실행이 잘 안되어서 일반적인 쿼리문으로 짜려고 했는데 

 

안되던 이유를 찾음.

 

https://dev.mysql.com/doc/c-api/5.7/en/c-api-multiple-queries.html

 

MySQL :: MySQL 5.7 C API Developer Guide :: 3.6.2 Multiple Statement Execution Support

3.6.2 Multiple Statement Execution Support By default, mysql_real_query() and mysql_query() interpret their statement string argument as a single statement to be executed, and you process the result according to whether the statement produces a result set

dev.mysql.com

 

내가 이해한 내용으로 적자면 

 

저장프로시저는 결과집합을 생성할 수 있으므로, 한 번 결과를 캐는게 끝났다면 

 

mysql_next_result()를 호출하여 (prepare statement에서는 mysql_stmt_next_result())

결과집합이 있는지 확인해야 한다는 것이었다.

 

그리고 이 함수를 사용하려면 mysql_connect 할 때 마지막인자에 CLIENT_MULTI_STATEMENTS 를 넣어 다중결과처리를 활성화 해야한다는 얘기 또한 있다,,

 

그동안 저장프로시저를 사용해서 select문을 실행하면 계속 syntax error가 떴던 것,,,,

prepare statement에도 똑같이 에러가 떳었는데 이것 또한 이때문이었던 것 같다 '-'....

 

고쳐서 코딩 결과 제대로 실행되는 것을 확인. 

 

다만 mysql_next_result()를 써서 결과집합이 또 있는지 체크해야하는거 때문에 코드가 길어지는 건 어쩔 수 없는듯 하다. 

또한 이것에 저장프로시저의 OUT 인자도 사용법이 애매했었는데 

 

https://dev.mysql.com/doc/c-api/5.7/en/c-api-prepared-call-statements.html

 

여기 설명이 친절하게 나와있다.. 예시랑 ^^...

검색을 잘 해보도록 하자 ! 

'개발 > MySQL' 카테고리의 다른 글

Mysql C++에서 Stored Procedure OUT 인자 사용하기.  (0) 2023.03.26

+ Recent posts