Compartilhar via


SQLBindParameter

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

SQLBindParameter pode eliminar a carga de conversão de dados quando usado para fornecer dados para o driver ODBC do SQL Server Native Client, resultando em ganhos significativos de desempenho para os componentes cliente e servidor dos aplicativos. Entre os outros benefícios está a menor perda de precisão ao inserir ou atualizar tipos de dados numéricos aproximados.

Observação

Ao inserir dados de tipos char e wchar em uma coluna de imagem, é usado o tamanho dos dados sendo passados, e não o tamanho dos dados após a conversão em formato binário.

Se o driver ODBC do SQL Server Native Client encontrar um erro em um único elemento de matriz de uma matriz de parâmetros, o driver continuará a executar a instrução para os elementos de matriz restantes. Se o aplicativo tiver associado uma matriz de elementos de status de parâmetro para a instrução, as linhas dos parâmetros que geram erros poderão ser determinadas a partir da matriz.

Ao usar o driver ODBC do SQL Server Native Client, especifique SQL_PARAM_INPUT ao associar parâmetros de entrada. Só especifique SQL_PARAM_OUTPUT ou SQL_PARAM_INPUT_OUTPUT ao associar parâmetros de procedimento armazenado definidos com a palavra-chave OUTPUT.

SQLRowCount não será confiável com o driver ODBC do SQL Server Native Client se um elemento de matriz de uma matriz de parâmetro associado causar um erro na execução da instrução. O atributo da instrução ODBC – SQL_ATTR_PARAMS_PROCESSED_PTR – informa o número de linhas processadas antes da ocorrência do erro. O aplicativo pode atravessar sua matriz de status de parâmetro para descobrir o número de instruções executadas com êxito, se necessário.

Associando parâmetros para tipos de caractere SQL

Se o tipo de dados SQL passado for um tipo de caractere, ColumnSize será o tamanho em caracteres (não em bytes). Se o comprimento da cadeia de dados em bytes for maior que 8000, ColumnSize deverá ser definido como SQL_SS_LENGTH_UNLIMITED, indicando que não há limite para o tamanho do tipo SQL.

Por exemplo, se o tipo de dados SQL for SQL_WVARCHAR, ColumnSize não deverá ser maior que 4000. Se o comprimento de dados real for maior que 4000, ColumnSize deverá ser definido como SQL_SS_LENGTH_UNLIMITED , de modo que nvarchar(max) será usado pelo driver.

SQLBindParameter e parâmetros com valor de tabela

Como outros tipos de parâmetro, os parâmetros com valor de tabela são associados por SQLBindParameter.

Depois que um parâmetro com valor de tabela é associado, suas colunas também são associadas. Para associar as colunas, chame SQLSetStmtAttr para definir SQL_SOPT_SS_PARAM_FOCUS como o ordinal do parâmetro com valor de tabela. Em seguida, chame SQLBindParameter para cada coluna no parâmetro com valor de tabela. Para voltar às associações de parâmetro de nível superior, defina SQL_SOPT_SS_PARAM_FOCUS como 0.

Para obter informações sobre como mapear parâmetros para campos descritores para parâmetros com valor de tabela, consulte Associação e transferência de dados de parâmetros com valor de tabela e valores de coluna.

Para obter mais informações sobre parâmetros com valor de tabela, consulte ODBC (Parâmetros com valor de tabela).

Suporte de SQLBindParameter a recursos aprimorados de data e hora

Os valores de parâmetro dos tipos de data/hora são convertidos conforme descrito em Conversões de C para SQL. Observe que parâmetros de tipo time e datetimeoffset precisam ter ValueType especificado como SQL_C_DEFAULT ou SQL_C_BINARY quando são usadas suas estruturas correspondentes (SQL_SS_TIME2_STRUCT e SQL_SS_TIMESTAMPOFFSET_STRUCT).

Para obter mais informações, consulte Melhorias de data e hora (ODBC).

Suporte de SQLBindParameter a UDTs CLR grandes

OSQLBindParameter suporta UDTs (tipos de dados definidos pelo usuário) CLR grandes. Para obter mais informações, consulte ODBC (Tipos Definidos pelo Usuário) CLR Grandes.

Confira também

Detalhes da implementação da API do ODBC
Função SQLBindParameter