Alocando um identificador de instrução
Para que um aplicativo possa executar uma instrução, deve alocar um identificador de instrução. Ele faz isto chamando SQLAllocHandle com o parâmetro HandleType definido como SQL_HANDLE_STMT e InputHandle apontando para um identificador de conexão.
Os atributos da instrução são características do identificador de instrução. O exemplo de atributos de instrução pode incluir o uso de indicadores e o tipo de cursor a ser usado com o conjunto de resultados da instrução. Os atributos de instrução são definidos com SQLSetStmtAttr e as configurações atuais correspondentes são recuperadas usando SQLGetStmtAttr. Não há nenhum requisito de que um aplicativo tenha definido qualquer atributo de instrução; todos os atributos de instrução têm padrões e alguns são específicos do driver.
Tome cuidado ao usar várias opções de conexão e instrução do ODBC. A chamada de SQLSetConnectAttr com fOption definido como SQL_ATTR_LOGIN_TIMEOUT controla o tempo que um aplicativo aguarda a expiração do tempo limite de uma tentativa de conexão enquanto espera o estabelecimento de uma conexão (0 especifica uma espera infinita). Os sites que têm tempos de resposta lentos podem definir este valor alto para verificar se as conexões têm tempo suficiente para serem estabelecidas. No entanto, o intervalo deve sempre ser baixo o suficiente para dar ao usuário uma resposta em um tempo razoável se o driver não puder se conectar.
A chamada de SQLSetStmtAttr com fOption definido como SQL_ATTR_QUERY_TIMEOUT define um intervalo de tempo limite de consulta para ajudar a proteger o servidor e o usuário contra consultas longas.
A chamada de SQLSetStmtAttr com fOption definido como SQL_ATTR_MAX_LENGTH limita a quantidade de dados de texto e de imagem que uma instrução específica pode recuperar. A chamada de SQLSetStmtAttr com fOption definido como SQL_ATTR_MAX_ROWS também limitará um conjunto de linhas às n primeiras linhas se isto for tudo o que o aplicativo deseja. Observe que a configuração SQL_ATTR_MAX_ROWS faz com que o driver emita uma instrução SET ROWCOUNT ao servidor. Isto afeta todas as instruções do Microsoft SQL Server, incluindo gatilhos e atualizações.
Tome cuidado quando você for definir estas opções. Será melhor se todos os identificações de instrução em um identificador de conexão tiverem as mesmas configurações para SQL_ATTR_MAX_LENGTH e SQL_ATTR_MAX_ROWS. Se o driver alternar de um identificador de instrução para outro com valores diferentes para essas opções, o driver deverá gerar as instruções SET TEXTSIZE e SET ROWCOUNT adequadas para alterar as configurações. O driver não pode colocar essas instruções no mesmo lote que a instrução SQL do usuário, pois a instrução SQL pode conter uma instrução que deve ser a primeira instrução em um lote. O driver deve enviar as instruções SET TEXTSIZE e SET ROWCOUNT em um lote separado que automaticamente gera uma viagem de ida-e-volta adicional ao servidor.