我正在使用poco库版本1.4.6
我想要做程序连接数据库,调用存储过程和获取参数。
首先,我选择这样的价值。
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;为什么要抛出异常?我不明白。因为我不擅长英语。
我试着找出另一个和我一样的问题。但其他用户不像我。
我想那是因为我不擅长英语。很难学到书面文件。
我希望使用存储过程并获得输出参数。
请帮帮我!
发布于 2014-06-13 19:43:13
1.4.x不支持存储过程。您应该使用1.5.x版本和Data::ODBC后端来支持完整的存储过程I/O。
https://stackoverflow.com/questions/24191381
复制相似问题