我正在使用 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”中的extractions().size(),第241行,sql中没有while循环所有工作,MSSQL服务器管理工作室所有工作,和在 ODBC 查询工具中它没有问题,但它不适用于 poco。有什么建议么 ?