Compartilhar via


Associando parâmetros

Para que a instrução possa ser executada, cada marcador de parâmetro em uma instrução SQL deve ser associado a uma variável no aplicativo. Isso é feito chamando a função SQLBindParameter . SQLBindParameter descreve a variável de programa (endereço, tipo de dados C e assim por diante) para o driver. Ela também identifica o marcador de parâmetro indicando seu valor ordinal e, em seguida, descreve as características do objeto SQL que representa (tipo de dados SQL, precisão e assim por diante).

Marcadores de parâmetro podem ser associados ou reassociados a qualquer momento, antes de uma instrução ser executada. Uma associação de parâmetro permanece em vigor até ocorrer um dos seguintes eventos:

  • Uma chamada para SQLFreeStmt com o parâmetro Option definido como SQL_RESET_PARAMS libera todos os parâmetros associados ao identificador de instrução.

  • Uma chamada para SQLBindParameter com ParameterNumber definido como o ordinal de um marcador de parâmetro associado libera automaticamente a associação anterior.

Um aplicativo também pode associar parâmetros a matrizes de variáveis de programa para processar uma instrução SQL em lotes. Há dois tipos de associação de matriz:

  • A associação em colunas é feita quando cada um dos parâmetros é associado à sua própria matriz de variáveis.

    A associação em colunas é especificada chamando SQLSetStmtAttr com Attribute definido como SQL_ATTR_PARAM_BIND_TYPE e ValuePtr definido como SQL_PARAM_BIND_BY_COLUMN.

  • A associação em linhas é feita quando todos os parâmetros na instrução SQL são associados como uma unidade a uma matriz de estruturas que contém cada uma das variáveis para os parâmetros.

    A associação por linha é especificada chamando SQLSetStmtAttr com Attribute definido como SQL_ATTR_PARAM_BIND_TYPE e ValuePtr definido como o tamanho da estrutura que contém as variáveis do programa.

Quando o driver ODBC do SQL Server Native Client envia parâmetros de caracteres ou cadeias de caracteres binárias para o servidor, ele preenche os valores para o comprimento especificado no parâmetro SQLBindParameterColumnSize . Se um aplicativo ODBC 2.x especificar 0 para ColumnSize, o driver preencherá o valor do parâmetro para a precisão do tipo de dados. A precisão é de 8000 quando conectado a servidores SQL Server, 255 quando conectado a versões anteriores do SQL Server. ColumnSize está em bytes para colunas variantes.

O SQL Server oferece suporte à definição de nomes para parâmetros de procedimento armazenado. O ODBC 3.5 também introduziu suporte para parâmetros nomeados usados ao chamar procedimentos armazenados do SQL Server. Esse suporte pode ser usado para:

  • Chamar um procedimento armazenado e fornecer valores para um subconjunto dos parâmetros definidos para o procedimento armazenado.

  • Especificar os parâmetros no aplicativo em uma ordem diferente daquela especificada quando o procedimento armazenado foi criado.

Os parâmetros nomeados só têm suporte ao usar a instrução Transact-SQL EXECUTE ou a sequência de escape ODBC CALL para executar um procedimento armazenado.

Se SQL_DESC_NAME for definido para um parâmetro de procedimento armazenado, todos os parâmetros de procedimento armazenado na consulta também deverão definir SQL_DESC_NAME. Se literais forem usados em chamadas de procedimento armazenado, em que os parâmetros foram SQL_DESC_NAME definidos, os literais deverão usar o formato 'name=value', em que name é o nome do parâmetro de procedimento armazenado (por exemplo, . @p1) Para obter mais informações, consulte Parâmetros de associação por nome (parâmetros nomeados).

Confira também

Usando parâmetros de instrução