【问题标题】:Poco ODBC and while SQL loopPoco ODBC 和 while SQL 循环
【发布时间】:2014-04-22 16:59:40
【问题描述】:

我正在使用 mssql odbc C++代码:

Session session("ODBC", connectionString);

Statement select(session);  

select << sql;  
select.execute();    
Poco::Data::RecordSet rs(select);   
bool more = rs.moveFirst();    
std::size_t cols = rs.columnCount();    
std::stringstream ss;
ss << "<table>";
while (more)
{
    ss << "<row>";
    for (std::size_t col = 0; col < cols; ++col)
    {
        std::string cn = rs.columnName (col);
        ss << "<" << cn << ">";
        ss << rs[col].convert<std::string>();
        ss << "</" << cn << ">";
    }
    ss << "</row>";
    more = rs.moveNext();
}
ss << "</table>";

一切正常,但如果我尝试 sql 循环,例如:

DECLARE @database_name sysname ;
SET @database_name = NULL; 
WHILE @database_name IS NOT NULL 
BEGIN
SET @database_name = NULL; 
END;
SELECT '0'

然后我有错误:bool more = rs.moveFirst();
断言违规:文件“C:\External\poco\include\Poco/Data/RecordSet.h”中的 extracts().size(),第 241 行 在 sql 中没有 while 循环所有工作,在 MSSQL 服务器管理工​​作室中所有工作,在 ODBC 查询工具中它没有问题,但它不适用于 poco。 有什么建议吗?

【问题讨论】:

    标签: c++ poco-libraries


    【解决方案1】:

    你正在执行一个匿名的代码块;如果你必须这样做,你必须把它变成一个命名的存储过程。

    有关如何为 SQL Server ODBC 执行此操作的示例,请参阅 ODBCSQLServerTest::testCursorStoredProcedure()

    注意:您需要一个高于 1.5.0 的 POCO 版本。

    【讨论】:

      猜你喜欢
      • 2021-03-23
      • 2013-07-12
      • 2014-03-29
      • 2018-02-12
      • 2010-10-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多