2014-06-12 6 views
0

poco 라이브러리 버전 1.4.6에 사용하고 있습니다.출력 매개 변수를 POCO의 저장 프로 시저로 가져 오려면 어떻게해야합니까?

데이터베이스 연결, 저장 프로 시저 호출 및 매개 변수 생성 프로그램을 만들고 싶습니다.

먼저이 값을 선택합니다.

conn.Connect(host, user, password, db); 
Poco::Data::Session* session = conn.Ptr(); 

int myNum; 
std::string myStr; 
*session << "SELECT `my_number`, `my_string` FROM `my_table`;", 
    Poco::Data::into(myNum), 
    Poco::Data::into(myStr), 
    Poco::Data::now; 

사용할 수 있습니다.

저장 프로 시저를 호출하여 출력 매개 변수 값을 가져 오려고합니다. 그래서 이렇게 썼다.

// `my_sp` was simple stored procedure like this. 
// `my_sp`(in inum int, in istr varchar(50), out onum int, out ostr varchar(50)) 
//  SET onum = inum; 
//  SET ostr = istr; 
int inNum, outNum; 
std::string inStr, outStr; 
*session << "CALL `my_sp`(?,?,?,?);", 
    Poco::Data::use(inNum), 
    Poco::Data::use(inStr), 
    Poco::Data::into(outNum), 
    Poco::Data::into(outStr), 
    Poco::Data::now; 

그러나 사용할 수 없습니다.

나는 그렇게하려고했습니다.

*session << "CALL `my_sp`(1234, \'abcd\', @o_num, @o_str);", 
    Poco::Data::now; 

*session << "SELECT @o_num;", 
    Poco::Data::into(outNum), 
    Poco::Data::now; 

//*session << "SELECT @o_num, @o_str;", 
// Poco::Data::into(outNum), 
// Poco::Data::into(outStr), 
// Poco::Data::now; 

select를 통해 번호를 가져올 수 있습니다. 하지만 나는 문자열을 얻을 수 없습니다. outStr을 선택하면 예외가 발생합니다.

[MySQL]: [Comment]: mysql_stmt_fetch error [mysql_stmt_error]:  [mysql_stmt_errno]: 0 [mysql_stmt_sqlstate]: 00000 [statemnt]: SELECT @o_num, @o_str; 

왜 예외가 발생합니까? 나는 이해하지 못한다. 왜냐하면 나는 영어로.. 거리지 않아.

나 같은 다른 질문을 찾았습니다. 다른 사용자는 나와 달리했습니다.

나는 이유가 내가 영어를 잘하지 않는다고 생각한다. 그래서 poco 문서를 배우기가 어렵습니다.

저장 프로 시저를 사용하고 출력 매개 변수를 가져오고 싶습니다.

도와주세요!

답변

0

저장 프로 시저는 1.4.x에서 지원되지 않습니다. 전체 저장 프로 시저 I/O 지원을 위해서는 1.5.x 릴리스와 Data :: ODBC 백 엔드를 사용해야합니다.