如何在POCO中获得存储过程的输出参数?

How can I get output parameter to stored procedure in POCO?

本文关键字:存储过程 输出 参数 POCO      更新时间:2023-10-16

我使用的是poco库版本1.4.6

我想编写程序连接数据库,调用存储过程,并得到参数。

首先,我像这样选择value。

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;

为什么抛出异常?我不明白。因为我英语不好。

我试着找一个像我一样的问题。但是其他用户和我不一样。

我想那是因为我英语不好。中文太难学了

我想使用存储过程并获得输出参数。

请帮帮我!

1.4.x不支持存储过程。你应该用1.5。

为完整的存储过程I/O支持。