Alocando um identificador de declaração

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)

Antes de uma aplicação poder executar uma instrução, deve alocar um handle de instrução. Faz isto chamando SQLAllocHandle com o parâmetro HandleType definido para SQL_HANDLE_STMT e InputHandle apontando para um handle de conexão.

Os atributos da instrução são características do handle da instrução. Atributos exemplos de instruções podem incluir o uso de marcadores e o tipo de cursor a usar com o conjunto de resultados da instrução. Os atributos da instrução são definidos com SQLSetStmtAttr, e as suas definições atuais são recuperadas usando SQLGetStmtAttr. Não existe qualquer requisito de que uma aplicação defina quaisquer atributos de instrução; Todos os atributos da instrução têm predefinições, e alguns são específicos do driver.

Tenha cautela ao utilizar várias instruções ODBC e opções de ligação. Chamar SQLSetConnectAttr com fOption definido para SQL_ATTR_LOGIN_TIMEOUT controla o tempo em que uma aplicação espera que uma tentativa de ligação expire enquanto espera para estabelecer uma ligação (0 especifica uma espera infinita). Sites com tempos de resposta lentos podem definir este valor elevado para garantir que as ligações têm tempo suficiente para serem concluídas. No entanto, o intervalo deve ser sempre suficientemente baixo para dar ao utilizador uma resposta num tempo razoável caso o driver não consiga ligar.

Chamar SQLSetStmtAttr com fOption definido para SQL_ATTR_QUERY_TIMEOUT define um intervalo de tempo de espera para ajudar a proteger o servidor e o utilizador de consultas de longa duração.

Chamar SQLSetStmtAttr com fOption definido para SQL_ATTR_MAX_LENGTH limita a quantidade de dados de texto e imagem que uma instrução individual pode recuperar. Chamar SQLSetStmtAttr com fOption definido para SQL_ATTR_MAX_ROWS também limita um conjunto de linhas às primeiras n linhas se isso for tudo o que a aplicação exigir. Note que definir SQL_ATTR_MAX_ROWS faz com que o driver emita uma SET ROWCOUNT declaração ao servidor. Isto afeta todas as instruções do Microsoft SQL Server, incluindo gatilhos e atualizações.

Tenha cuidado ao definir estas opções. É melhor que todos os handles de extração num handle de ligação tenham as mesmas definições para SQL_ATTR_MAX_LENGTH e SQL_ATTR_MAX_ROWS. Se o driver mudar de um handle de instrução para outro com valores diferentes para estas opções, deve gerar as instruções and SETSET ROWCOUNT apropriadas SETSET TEXTSIZE para alterar as definições. O driver não pode colocar estas instruções no mesmo lote que a instrução SQL do utilizador porque a instrução SQL do utilizador pode conter uma instrução que deve ser a primeira de um lote. O condutor deve enviar as SETSET TEXTSIZE instruções e SETSET ROWCOUNT num lote separado, o que gera automaticamente uma viagem adicional de ida e volta ao servidor.

Ver também

Executando consultas (ODBC)