Share via


Usando conjuntos de resultados padrão do SQL Server

Os atributos padrão de cursor do ODBC são:

SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_READ_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, 1, SQL_IS_INTEGER);

Sempre que esses atributos são definidos como padrão, o driver ODBC do SQL Server Native Client usa um conjunto de resultados do SQL Server padrão. Os conjuntos de resultado padrão podem ser usados para qualquer instrução do SQL com suporte do SQL Server e são o método mais eficiente para transferir todo um conjunto de resultados para o cliente.

O SQL Server 2005 introduziu o suporte a MARS (vários conjuntos de resultados ativos). Agora, os aplicativos podem ter mais de um conjunto de resultados padrão ativo por conexão. O MARS não está habilitado por padrão.

Antes do SQL Server 2005, os conjuntos de resultados padrão não ofereciam suporte a várias instruções ativas na mesma conexão. Depois que uma instrução SQL é executada em uma conexão, o servidor não aceita comandos (exceto uma solicitação para cancelar o restante do conjunto de resultados) do cliente nessa conexão até que todas as linhas do conjunto de resultados sejam processadas. Para cancelar o restante de um conjunto de resultados parcialmente processado, chame SQLCloseCursor ou SQLFreeStmt com o parâmetro fOption definido como SQL_CLOSE. Para concluir um conjunto de resultados parcialmente processado e testar a presença de outro conjunto de resultados, chame SQLMoreResults. Se um aplicativo ODBC tentar um comando em um identificador de conexão antes da conclusão do processamento de um conjunto de resultados padrão, a chamada gerará o SQL-ERROR e será retornada uma chamada para SQLGetDiagRec:

szSqlState: "HY000", pfNativeError: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]
                Connection is busy with results for another hstmt."

Consulte também

Conceitos

Como os cursores são implementados