我想知道是否有其他人遇到过这个问题以及他们是如何解决的?
我们的应用程序进行以下 ODBC 调用:
CString strCmd = "sprTestSingleSelect";
rc = SQLExecDirect(hstmt, (UCHAR*)(LPCSTR)strCmd, SQL_NTS);
呼叫重新运行SQL_SUCCESS_WITH_INFO
。通过检查SQLGetDiagRec
我们看到了消息;光标类型已更改。
我们从 Micrsoft 中找到了以下文章;
存储过程 ,sprTestSingleSelect
是专门为测试两篇文章所暗示的内容而创建的 - 多重选择会导致更改。
CREATE PROCEDURE sprTestSingleSelect
AS
BEGIN
SET NOCOUNT ON;
SELECT id, firstname, lastname FROM address
END
GO
但是,即使使用这个非常简单的(单个 SELECT)存储过程,游标类型仍在更改(从SQL_CURSOR_KEYSET_DRIVEN
到SQL_CURSOR_FORWARD_ONLY
)。
我们需要将光标类型停留在SQL_CURSOR_KEYSET_DRIVEN
,稍后在我们正在调用的应用程序中SQLFetchScroll(hstmt, SQL_FETCH_LAST, 0);
,由于光标类型不正确,它正在下降。
有没有人知道我们可能做错了什么或出了什么问题?
我们正在使用 MS SQL Server 2008R2
我们的应用程序是用 C++ 编写的(使用 Visual Studio 10 Premium)