相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 285.1 kb
PDF (A4)- 286.0 kb


7.2.3使用声明返回结果集的存储过程

这个例子展示了如何处理存储过程产生的结果集。

  1. 复制一份教程框架代码:

    $> cp framework.cpp sp_scenario .cpp
  2. 将以下代码添加到试一试教程框架块:

    sql::Driver* Driver = get_driver_instance();std::auto_ptr con(driver->connect(url, user, pass));con - > setSchema(数据库);std:: auto_ptr < sql:声明>支撑(con - > createStatement ());支撑- >执行(“叫get_data () ");< sql::ResultSet > res;做{res.reset(支撑- > getResultSet ());while (res->next()) {cout << "Name: " << res->getString("Name") << "Population: " << res->getInt("Population") << endl;}} while (stmt->getMoreResults());
  3. 按中所述编译程序第7.1节,“先决条件和背景信息”

  4. 运行程序:

    $> ./sp_scenario3 Connector/ c++教程框架…名称:科科斯(基林)群岛人口:600名称:圣诞岛人口:2500名称:诺福克岛人口:2000名称:纽埃人口:2000名称:皮特凯恩人口:50名称:托克劳人口:2000名称:美国小离岛人口:0名称:斯瓦尔巴群岛和扬马延人口:3200名称:圣座(梵蒂冈城邦)人口:1000名称:安圭拉人口:8000名称:亚特兰蒂斯人口:0名称:圣皮埃尔和密克隆人口:7000完成。

代码类似于前面展示的示例。这里特别有趣的代码是:

做{res.reset(支撑- > getResultSet ());while (res->next()) {cout << "Name: " << res->getString("Name") << "Population: " << res->getInt("Population") << endl;}} while (stmt->getMoreResults());

调用和之前一样执行,但是这次结果返回到多个结果集对象,因为存储过程执行多个选择语句。在这个示例中,输出显示处理了三个结果集,因为有三个结果集选择语句。每个结果集返回不止一行。

使用以下代码模式处理结果:

do {Get Result Set while (Get Result) {Process Result}} while (Get More Result Sets);
请注意

即使存储过程只执行单个操作,也可以使用此模式选择并且只产生一个结果集。这是底层协议的要求。