1

他の誰かがこの問題を抱えていて、どのように解決したのか疑問に思っていますか?

このアプリケーションは、次の ODBC 呼び出しを行います。

CString strCmd = "sprTestSingleSelect";
rc = SQLExecDirect(hstmt, (UCHAR*)(LPCSTR)strCmd, SQL_NTS);

呼び出しが再実行されSQL_SUCCESS_WITH_INFOます。チェックするSQLGetDiagRecと、メッセージが表示されます。カーソルの種類が変更されました。

Microsoft から次の記事が見つかりました。

  1. http://support.microsoft.com/kb/156500/en-us
  2. http://msdn.microsoft.com/library/ms130807.aspx

ストアド プロシージャ はsprTestSingleSelect、両方の記事で示唆されていることをテストするために特別に作成されました。複数の選択によって変更が発生します。

CREATE PROCEDURE sprTestSingleSelect
AS
BEGIN
SET NOCOUNT ON;
SELECT id, firstname, lastname FROM address
END
GO

ただし、この非常に単純な (単一の SELECT) ストアド プロシージャでも、カーソルの種類は ( からSQL_CURSOR_KEYSET_DRIVENSQL_CURSOR_FORWARD_ONLY) 変更されています。

カーソル タイプを にとどめる必要があります。これはSQL_CURSOR_KEYSET_DRIVEN、後で呼び出しているアプリケーションでSQLFetchScroll(hstmt, SQL_FETCH_LAST, 0);、カーソル タイプが正しくないために落ちているためです。

私たちが何を間違っているのか、何が間違っているのか、誰か知っている人はいますか?

MS SQL Server 2008R2 を使用しています

私たちのアプリケーションは C++ で書かれています (Visual Studio 10 Premium を使用)

4

1 に答える 1