设置
使用SQL Server 2008 R2。
我有一个对存储过程的ODBC调用,通过使用带有SQL_ATTR_QUERY_TIMEOUT参数的SQLSetStmtAttr函数,该调用应该在3秒钟后超时。
SQLSetStmtAttr( command, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)&timeOut, NULL );
测试
我在存储过程中设置了15秒的延迟。存储的proc确实只需要超过15秒就可以返回。
WAITFOR DELAY '00:00:15'
问题
问题是存储过程返回正确,而我预计会出现错误。
有什么想法吗?
发现问题。
timeOut变量(int(作为引用被传递到SQLSetStmtAttr中,并且引用位置的值远大于3。
正确的实现是:
SQLSetStmtAttr( command, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)timeOut, NULL );