티스토리 뷰

DataBase/MySQL

Stored Procedure 호출 소스 코드 for Linux

군자동꽃미남 2016. 10. 4. 11:38

리눅스 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를 사용한다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함