gpt4 book ai didi

c++ - 如何获取 POCO 中存储过程的输出参数?

转载 作者:行者123 更新时间:2023-11-30 00:09:38 26 4
gpt4 key购买 nike

我使用的是 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;

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

我尝试找到另一个像我一样的问题。但其他用户与我不同。

我认为原因是我英语不好。 poco-document 太难学了。

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

请帮助我!

最佳答案

1.4.x 不支持存储过程。您应该使用 1.5.x 版本和 Data::ODBC 后端来获得完整的存储过程 I/O 支持。

关于c++ - 如何获取 POCO 中存储过程的输出参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com