首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得POCO中存储过程的输出参数?

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

Stack Overflow用户
提问于 2014-06-12 18:23:05
回答 1查看 833关注 0票数 0

我正在使用poco库版本1.4.6

我想要做程序连接数据库,调用存储过程和获取参数。

首先,我选择这样的价值。

代码语言:javascript
复制
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;

那是可以得到的。

我想调用存储过程并获得输出参数值。就这样写的。

代码语言:javascript
复制
// `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;

但当时还没有。

我试过这样做。

代码语言:javascript
复制
*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,则抛出异常。

代码语言:javascript
复制
[MySQL]: [Comment]: mysql_stmt_fetch error  [mysql_stmt_error]:     [mysql_stmt_errno]: 0   [mysql_stmt_sqlstate]: 00000    [statemnt]: SELECT @o_num, @o_str;

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

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

我想那是因为我不擅长英语。很难学到书面文件。

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

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-13 19:43:13

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24191381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档