Tipo ODBC SQL para parâmetros com valor de tabela
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 pode ser convertido em qualquer outro tipo de dados ODBC ou do SQL Server.
Se SQL_SS_TABLE for usado como um tipo de dados C no parâmetro ValueType de SQLBindParameter ou se for feita uma tentativa de definir SQL_DESC_TYPE em um registro de APD (descrito de parâmetro de aplicativo) para SQL_SS_TABLE, SQL_ERROR será retornado e será gerado um registro de diagnóstico 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 somente pode ser um parâmetro de entrada. Se for feita uma tentativa de definir SQL_DESC_PARAMETER_TYPE com um valor diferente de SQL_PARAM_INPUT por meio de 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 for 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 "Comprimento de buffer ou de cadeia de caracteres inválido".