티스토리 뷰
리눅스 mysql 버전 -> 5.0.92-1
리눅스 버전 -> Red Hat Linux Advanced Server release 2.1AS (Pensacola)
프로시저란?
http://recoveryman.tistory.com/186
1. mysql_real_connect의 마지막 옵션을 CLIENT_MULTI_STATEMENTS로 준다. (또는 CLIENT_MULTI_RESULTS)
: mysql의 프로시저를 사용하기 위해서는 해당 옵션을 설정해 주어야 한다.
2 . 다음과 같이 쿼리를 날려준다.
1 2 3 4 5 6 7 | byte = snprintf(query_buffer, 1024, "call test_sp(\"test\")"); if (mysql_real_query(&mysql, query_buffer, byte) != 0) { printf("[%d] %s \n", mysql_errno(&mysql), mysql_error(&mysql)); continue; } | cs |
3. 결과를 얻는다.
1 | res = mysql_store_result(&mysql); | cs |
- mysql_store_result(...)
- mysql_use_result(...)
위 둘의 차이는 리턴되는 ROW들을 하꺼번에 모두 서버로부터 얻어 올 것인지(mysql_store_result(...)),
혹은 한번에 한 개의 ROW를 얻어 올 것인지(mysql_use_result(...))의 차이이다.
1 2 3 4 5 6 7 8 | do { while ((row = mysql_fetch_row(res))) { printf("result = %s\n", row[1]); } }while (!mysql_next_result(&mysql)); | cs |
mysql_next_result(...)는 프로시져를 사용할 때 다음 결과셋으로 오프셋을 이동시켜주는 역할을 한다.
0 |
성공적이며 결과들이 더 있다. |
-1 |
성공적이며 결과들이 더는 없다. |
>0 |
에러 발생 |
하나의 결과셋을 읽어들일 때는, mysql_fetch_row를 사용하여 읽어들이고, 여러 결과셋을 읽어들일 때는 mysql_next_result를 사용한다.
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21823&cat1=22&cat2=596&cat3=606&lang=k - 한글번역
'DataBase > MySQL' 카테고리의 다른 글
MYSQL_OPT_RECONNECT (mysql_options) for Linux (0) | 2016.09.29 |
---|---|
엑셀을 MySQL로 Import (0) | 2015.06.07 |
외부에서 DB 접속 허용하게 하기 (0) | 2015.06.04 |
LONGBLOB을 쿼리로 값을 저장해보자 (0) | 2015.06.02 |
댓글