Um conjunto de resultados foi criado?
Na maioria das situações, os programadores de aplicativos sabem se as instruções que seu aplicativo executa criarão um conjunto de resultados. Esse será o caso se o aplicativo usar instruções SQL embutidas em código escritas pelo programador. Geralmente é o caso quando o aplicativo cria instruções SQL em tempo de execução: o programador pode facilmente incluir código que sinaliza se uma instrução SELECT ou INSERT está sendo criada. Em algumas situações, o programador não pode saber se uma instrução criará um conjunto de resultados. Isso será verdadeiro se o aplicativo fornecer uma maneira para o usuário inserir e executar uma instrução SQL. Também é verdade quando o aplicativo cria uma instrução em tempo de execução para executar um procedimento.
Nesses casos, o aplicativo chama SQLNumResultCols para determinar o número de colunas no conjunto de resultados. Se for 0, isso indicará que a instrução não criou um conjunto de resultados; se for qualquer outro número, isso indicará que a instrução criou um conjunto de resultados.
O aplicativo pode chamar SQLNumResultCols a qualquer momento após a instrução ser preparada ou executada. No entanto, como algumas fontes de dados não podem descrever facilmente os conjuntos de resultados que serão criados por instruções preparadas, o desempenho será prejudicado se SQLNumResultCols for chamado depois que uma instrução for preparada, mas antes de ser executada.
Algumas fontes de dados também dão suporte à determinação do número de linhas que uma instrução SQL retorna em um conjunto de resultados. Para fazer isso, o aplicativo chama SQLRowCount. Exatamente o que a contagem de linhas representa é indicado pela configuração da opção SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 ou SQL_STATIC_CURSOR_ATTRIBUTES2 (dependendo do tipo do cursor) retornada por uma chamada a SQLGetInfo. Essa máscara de bits indica para cada tipo de cursor se a contagem de linhas retornada é exata, se é aproximada ou se não está disponível. A indicação de que as contagens de linhas para cursores estáticos ou controlados por conjunto de chaves são afetadas por alterações feitas por meio de SQLBulkOperations ou SQLSetPos ou por instruções posicionadas de atualização ou exclusão depende de outros bits retornados pelos mesmos argumentos de opção listados anteriormente. Para obter mais informações, consulte a descrição da função SQLGetInfo.