Partilhar via


Tipo SQL ODBC para parâmetros com valor de tabela

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

O suporte para parâmetros com valor de tabela é fornecido por um novo tipo ODBC SQL, SQL_SS_TABLE.

Comentários

SQL_SS_TABLE não podem ser convertidos em nenhum outro tipo de dados ODBC ou SQL Server.

Se SQL_SS_TABLE for usado como um tipo de dados C no parâmetro ValueType de SQLBindParameter, ou for feita uma tentativa de definir SQL_DESC_TYPE em um registro APD (descritor de parâmetro de aplicativo) como SQL_SS_TABLE, SQL_ERROR será retornado e um registro de diagnóstico será gerado com SQLSTATE=HY003, "Tipo de buffer de aplicativo inválido".

Se SQL_DESC_TYPE for definido como SQL_SS_TABLE em um registro do IPD e o registro do descritor de parâmetro de aplicativo correspondente não for SQL_C_DEFAULT, SQL_ERROR será retornado e um registro de diagnóstico será gerado com SQLSTATE=HY003, "Tipo de buffer de aplicativo inválido". Isso pode ocorrer com o ParameterType de um SQLSetDescField, SQLSetDescRec ou SQLBindParameter.

Se o parâmetro TargetType for SQL_SS_TABLE ao chamar SQLGetData, SQL_ERROR será retornado e um registro de diagnóstico será gerado com SQLSTATE=HY003, "Tipo de buffer de aplicativo inválido".

Não é possível associar uma coluna de parâmetros com valor de tabela como o tipo SQL_SS_TABLE. Se SQLBindParameter for chamado com ParameterType definido como SQL_SS_TABLE, SQL_ERROR será retornado e um registro de diagnóstico será gerado com SQLSTATE=HY004, "Tipo de dados SQL inválido". Isso também pode ocorrer com SQLSetDescField e SQLSetDescRec.

Os valores de coluna de parâmetros com valor de tabela têm as mesmas opções de conversão de dados que as colunas de parâmetros e resultados.

Um parâmetro com valor de tabela só pode ser um parâmetro de entrada no SQL Server 2008 (10.0.x) ou posterior. Se for feita uma tentativa de definir SQL_DESC_PARAMETER_TYPE para um valor diferente de SQL_PARAM_INPUT via SQLBindParameter ou SQLSetDescField, SQL_ERROR será retornado e um registro de diagnóstico será adicionado à instrução com SQLSTATE=HY105 e a mensagem "Tipo de parâmetro inválido".

As colunas de parâmetros com valor de tabela não podem usar SQL_DEFAULT_PARAM em StrLen_or_IndPtr, porque não há suporte para valores padrão por linha com parâmetros com valor de tabela. Em vez disso, um aplicativo pode definir o atributo de coluna SQL_CA_SS_COL_HAS_DEFAULT_VALUE como 1. Isso significa que a coluna terá valores padrão para todas as linhas. Se StrLen_or_IndPtr estiver definido como SQL_DEFAULT_PARAM, SQLExecute ou SQLExecDirect retornará SQL_ERROR e um registro de diagnóstico será adicionado à instrução com SQLSTATE=HY090 e a mensagem "Cadeia de caracteres ou comprimento de buffer inválido".

Confira também

Parâmetros com valor de tabela (ODBC)