database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27139 게시물 읽기
No. 27139
초보대왕님 사슴이 코드 올렸습니다
작성자
사슴
작성일
2007-11-07 11:46
조회수
3,038

코드는 다음과 같습니다

 uint32 GetNumber()

{

     string strQuery = "CALL Proctest(3);";

     int ret = mysql_query (DatabaseConnection, strQuery.c_str());

     if (ret != 0)

        return 0;


     uint32 uRowNum = 0;

     MYSQL_RES* Result = mysql_store_result(DatabaseConnection);;

     

     if (Result == NULL)

        return 0;

     else

        uRowNum = (uint32)mysql_num_rows(Result);


     mysql_free_result(Result);


     return uRowNum;

}


코드는 위와 같습니다

위의 함수를 처음 호출할때는 제대로 결과가 나오는데 두번째 호출때에는 mysql_query 가 실패하는것입니다


MySql서버에는 ProcTest라는 간단한 프로시저를 이미 만들어 놓았구요


MySql Query Browser에서 이 프로시저 호출하면 아무리 여러번 호출하여도 아주 잘 동작하거든요


근데 C++에서 우의 함수를 호출하여 사용하고자 하면 왜 두번째 호출부터 에러가 뜨는것일가요?


인터넷에서 더러 자료를 보니 프로시저를 사용하려면 첨에 mysql_real_connect를 사용하여 mysql서버에 접속할때 마지막 파라미터로서 CLIENT_MULTI_STATEMENTS를 주어야 한다고 하길래 그렇게 주어도 보았습니다


그런데 그렇게 주나 안주나 결과는 한가지네요


초보대왕님의 성의 있는 답변에 감사드립니다


다시한번 부탁드립니다


* 가능하면 메신저부탁드립니다(ro80516@hotmail.com)

이 글에 대한 댓글이 총 1건 있습니다.

음 예상했던 대로 그 문제 때문이었네요.

mysql 의 저장 프로시저는 다중 테이블을 반환할 수 있읍니다.
그래서 쿼리상에서 저장프로시저를 호출하는 경우에
그 저장프로시저가 반환하는 모든 테이블을 처리하고 또
처리했다는 표식을 서버에 반드시 알려주어야 합니다.

이 과정을 생략할 경우에 out of sync 가 발생하는 것이죠
즉 처리상의 순서가 잘못되었다는 것을 의미합니다.

mysql 이 저장프로시저를 도입하면서 이와 관련해서 추가된 API 를 찾아보시면
금방 해결책을 찾으실 수 있죠. (찾고나면 아주 단순하답니다.)
그럼 건투를 빕니다.

초보대왕님이 2007-11-07 18:48에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27143정말 급한데요.. 이것좀 봐주세요.. ㅜㅜ [2]
이양훈
2007-11-07
3396
271421356 SQLSTATE 에러가 나는데요 좀 도와주세요 [1]
몰라요;
2007-11-07
3600
27140리플리케이션(?) 메인DB서버<->클라이언트DB 방법이 있나요? [1]
권순원
2007-11-07
2583
27139초보대왕님 사슴이 코드 올렸습니다 [1]
사슴
2007-11-07
3038
27138초보대왕님 16532번 바주세요 [1]
사슴
2007-11-06
2110
27137sql 조인에 대해서 알고 싶습니다. [1]
김남훈
2007-11-06
2493
27136mysql_front 에서 접속 권한
이동규
2007-11-06
2308
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다