Partilhar via


Usar parâmetros de instrução – Parâmetros de associação

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Cada marcador de parâmetro em uma instrução SQL deve ser associado ou vinculado a uma variável no aplicativo antes que a instrução possa ser executada. 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 vincular 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 SQLBindParameter ColumnSize . 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 EXECUTE do Transact-SQL 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 ser definidos SQL_DESC_NAME. Se literais forem usados em chamadas de procedimento armazenado, em que os parâmetros SQL_DESC_NAME foram 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