기존의 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 |
---|