2

设置

使用 SQL Server 2008 R2。

我使用带有 SQL_ATTR_QUERY_TIMEOUT 参数的 SQLSetStmtAttr 函数对存储过程进行了 ODBC 调用,该存储过程应在 3 秒后超时。

SQLSetStmtAttr( command, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)&timeOut, NULL );

测试

我在存储过程中设置了 15 秒的延迟。存储过程确实需要 15 多秒才能返回。

WAITFOR DELAY '00:00:15'

问题

问题是存储过程正确返回,我预计会出现错误。

有任何想法吗?

4

1 回答 1

3

发现的问题。

timeOut 变量(int)作为引用传入 SQLSetStmtAttr,引用位置的值远大于 3。

正确的实现是:

SQLSetStmtAttr( command, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)timeOut, NULL );
于 2013-04-16T17:06:19.580 回答