Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Conformidade
Versão Introduzida: Normas ODBC 1.0 Conformidade: ISO 92
Resumo
O SQLGetTypeInfo devolve informações sobre os tipos de dados suportados pela fonte de dados. O driver devolve a informação sob a forma de um conjunto de resultados SQL. Os tipos de dados destinam-se a ser usados em instruções de Linguagem de Definição de Dados (DDL).
Importante
As aplicações devem usar os nomes dos tipos retornados na coluna TYPE_NAME do conjunto de resultados SQLGetTypeInfo em ALTER TABLE e CREATE TABLE instruções. O SQLGetTypeInfo pode devolver mais do que uma linha com o mesmo valor na coluna DATA_TYPE.
Syntax
SQLRETURN SQLGetTypeInfo(
SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
Arguments
HandleStatement
[Entrada] Handle de instrução para o conjunto de resultados.
Tipo de dados
[Entrada] O tipo de dados SQL. Este deve ser um dos valores na secção de Tipos de Dados SQL do Apêndice D: Tipos de Dados, ou um tipo de dado SQL específico do driver. SQL_ALL_TYPES especifica que a informação sobre todos os tipos de dados deve ser devolvida.
Devoluções
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ou SQL_INVALID_HANDLE.
Diagnostics
Quando SQLGetTypeInfo devolve SQL_ERROR ou SQL_SUCCESS_WITH_INFO, um valor SQLSTATE associado pode ser obtido chamando SQLGetDiagRec com um HandleType de SQL_HANDLE_STMT e um Handle de StatementHandle. A tabela seguinte lista os valores SQLSTATE normalmente retornados pelo SQLGetTypeInfo e explica cada um no contexto desta função; a notação "(DM)" precede as descrições dos SQLSTATEs devolvidas pelo Gestor de Drivers. O código de retorno associado a cada valor SQLSTATE é SQL_ERROR, salvo indicação em contrário.
| SQLSTATE | Erro | Description |
|---|---|---|
| 01000 | Aviso geral | Mensagem informativa específica para o condutor. (Função devolve SQL_SUCCESS_WITH_INFO.) |
| 01S02 | Valor da opção alterado | Um atributo de instrução especificado era inválido devido às condições de trabalho da implementação, pelo que um valor semelhante foi temporariamente substituído. (Chame SQLGetStmtAttr para determinar o valor temporariamente substituído.) O valor substituto é válido para o StatementHandle até que o cursor seja fechado. Os atributos da instrução que podem ser alterados são: SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_KEYSET_SIZE, SQL_ATTR_MAX_LENGTH, SQL_ATTR_MAX_ROWS, SQL_ATTR_QUERY_TIMEOUT e SQL_ATTR_SIMULATE_CURSOR. (Função devolve SQL_SUCCESS_WITH_INFO.) |
| 08S01 | Falha da ligação de comunicação | A ligação de comunicação entre o driver e a fonte de dados à qual o driver estava ligado falhou antes de a função concluir o processamento. |
| 24000 | Estado do cursor inválido | Um cursor estava aberto no StatementHandle, e SQLFetch ou SQLFetchScroll tinham sido chamados. Este erro é devolvido pelo Gestor de Drivers se SQLFetch ou SQLFetchScroll não tiverem devolto SQL_NO_DATA, e é devolvido pelo driver se SQLFetch ou SQLFetchScroll tiverem devolvido SQL_NO_DATA. Um conjunto de resultados estava aberto no StatementHandle, mas SQLFetch ou SQLFetchScroll não tinham sido chamados. |
| 40001 | Falha de serialização | A transação foi revertida devido a um bloqueio de recursos com outra transação. |
| 40003 | Conclusão da afirmação desconhecida | A ligação associada falhou durante a execução desta função e o estado da transação não pode ser determinado. |
| HY000 | Erro geral | Ocorreu um erro para o qual não existia um SQLSTATE específico e para o qual não estava definido nenhum SQLSTATE específico da implementação. A mensagem de erro devolvida pelo SQLGetDiagRec no buffer *MessageText descreve o erro e a sua causa. |
| HY001 | Erro de alocação de memória | O driver não conseguia alocar a memória necessária para suportar a execução ou conclusão da função. |
| HY004 | Tipo de dado SQL inválido | O valor especificado para o argumento DataType não era um identificador válido de tipo de dados ODBC SQL nem um identificador de tipo de dado específico do driver suportado pelo driver. |
| HY008 | Operação cancelada | O processamento assíncrono era ativado para o StatementHandle, depois a função era chamada e, antes de terminar a execução, o SQLCancel ou SQLCancelHandle era chamado no StatementHandle. Depois, a função era chamada novamente no StatementHandle. A função era chamada e, antes de terminar a execução, o SQLCancel ou SQLCancelHandle era chamado no StatementHandle a partir de outro thread numa aplicação multithread. |
| HY010 | Erro de sequência de funções | (DM) Uma função de execução assíncrona era chamada para o handle de ligação associado ao StatementHandle. Esta função assíncrona ainda estava a ser executada quando a função SQLGetTypeInfo foi chamada. (DM) SQLExecute, SQLExecDirect ou SQLMoreResults era chamado para o StatementHandle e devolvido SQL_PARAM_DATA_AVAILABLE. Esta função era chamada antes de os dados serem recuperados para todos os parâmetros transmitidos. (DM) Uma função de execução assíncrona (não esta) era chamada para o StatementHandle e continuava a ser executada quando esta função era chamada. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations ou SQLSetPos era chamado para o StatementHandle e devolvido SQL_NEED_DATA. Esta função era chamada antes de os dados serem enviados para todos os parâmetros ou colunas de dados na execução. |
| HY013 | Erro de gestão de memória | A chamada de função não podia ser processada porque os objetos de memória subjacentes não podiam ser acedidos, possivelmente devido a condições de baixa memória. |
| HY117 | A ligação é suspensa devido ao estado desconhecido da transação. Apenas funções de desconexão e de leitura são permitidas. | (DM) Para mais informações sobre o estado suspenso, veja Função SQLEndTran. |
| HYC00 | Funcionalidade opcional não implementada | A combinação das definições atuais dos atributos SQL_ATTR_CONCURRENCY e SQL_ATTR_CURSOR_TYPE da instrução não era suportada pelo driver ou pela fonte de dados. O atributo da instrução SQL_ATTR_USE_BOOKMARKS foi definido para SQL_UB_VARIABLE, e o atributo da instrução SQL_ATTR_CURSOR_TYPE foi definido para um tipo de cursor para o qual o driver não suporta favoritos. |
| HYT00 | O tempo expirou | O período de tempo de espera da consulta expirava antes de a fonte de dados devolver o conjunto de resultados. O período de tempo é definido através do SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
| HYT01 | Expirou o tempo limite de ligação | O período de timeout da ligação expirou antes de a fonte de dados responder ao pedido. O período de tempo de expiração da ligação é definido através do SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | O driver não suporta esta função | (DM) O driver correspondente ao StatementHandle não suporta a função. |
| IM017 | A sondagem está desativada no modo de notificação assíncrona | Sempre que o modelo de notificação é utilizado, o sonding é desativado. |
| IM018 | O SQLCompleteAsync não foi chamado para completar a operação assíncrona anterior neste handle. | Se a chamada de função anterior no handle devolver SQL_STILL_EXECUTING e se o modo de notificação estiver ativado, o SQLCompleteAsync deve ser chamado no handle para fazer o pós-processamento e completar a operação. |
Comments
O SQLGetTypeInfo devolve os resultados como um conjunto padrão de resultados, ordenados por DATA_TYPE e depois pela proximidade com que o tipo de dado corresponde ao correspondente tipo de dados ODBC SQL. Os tipos de dados definidos pela fonte de dados têm precedência sobre os tipos de dados definidos pelo utilizador. Consequentemente, a ordem de ordenação não é necessariamente consistente, mas pode ser generalizada como DATA_TYPE primeiro, seguida de TYPE_NAME, ambas ascendentes. Por exemplo, suponha que uma fonte de dados definiu tipos de dados INTEGER e COUNTER, onde COUNTER é auto-incrementante, e que um tipo de dado definido pelo utilizador, WHOLENUM, também foi definido. Estes seriam devolvidos na ordem INTEGER, WHOLENUM e COUNTER, porque o WHOLENUM corresponde de forma próxima ao tipo de dados ODBC SQL SQL_INTEGER, enquanto o tipo de dado de auto-incremento, embora suportado pela fonte de dados, não corresponde de perto a um tipo de dados ODBC SQL. Para informações sobre como esta informação pode ser utilizada, consulte Declarações DDL.
Se o argumento DataType especificar um tipo de dado válido para a versão de ODBC suportada pelo driver, mas não suportado pelo driver, então devolverá um conjunto de resultados vazio.
Note
Para mais informações sobre o uso geral, argumentos e dados devolvidos das funções de catálogo ODBC, consulte Funções de Catálogo.
As colunas seguintes foram renomeadas para ODBC 3. x. As alterações no nome das colunas não afetam a compatibilidade retroativa porque as aplicações associam por número de coluna.
| Coluna ODBC 2.0 | ODBC 3. Coluna X |
|---|---|
| PRECISÃO | TAMANHO_DA_COLUNA |
| DINHEIRO | FIXED_PREC_SCALE |
| AUTO_INCREMENT | AUTO_UNIQUE_VALUE |
As colunas seguintes foram adicionadas ao conjunto de resultados devolvido pelo SQLGetTypeInfo para o ODBC 3. x:
SQL_DATA_TYPE
PRECISÃO_DO_INTERVALO
SQL_DATETIME_SUB
NUM_PREC_RADIX
A tabela seguinte lista as colunas do conjunto de resultados. Colunas adicionais para além da coluna 19 (INTERVAL_PRECISION) podem ser definidas pelo driver. Uma aplicação deve aceder a colunas específicas do driver contando a partir do final do conjunto de resultados, em vez de especificar uma posição ordinal explícita. Para mais informações, consulte Dados Devolvidos por Funções de Catálogo.
Note
O SQLGetTypeInfo pode não devolver todos os tipos de dados. Por exemplo, um driver pode não devolver tipos de dados definidos pelo utilizador. As aplicações podem usar qualquer tipo de dado válido, independentemente de ser devolvido por SQLGetTypeInfo. Os tipos de dados devolvidos pelo SQLGetTypeInfo são aqueles suportados pela fonte de dados. Destinam-se a ser usados em instruções de Linguagem de Definição de Dados (DDL). Os drivers podem devolver dados do conjunto de resultados usando tipos de dados diferentes dos tipos retornados pelo SQLGetTypeInfo. Ao criar o conjunto de resultados para uma função de catálogo, o driver pode usar um tipo de dado que não é suportado pela fonte de dados.
| Nome da coluna | Coluna number |
Tipo de dados | Comments |
|---|---|---|---|
| TYPE_NAME (ODBC 2.0) | 1 | Varchar não NULL | Nome do tipo de dado dependente da fonte de dados; por exemplo, "CHAR()", "VARCHAR()", "MONEY", "LONG VARBINARY" ou "CHAR ( ) PARA DADOS DE BITS". As aplicações devem usar este nome nas CREATE TABLE instruções and ALTER TABLE . |
| DATA_TYPE (ODBC 2.0) | 2 | Smallint not NULL | Tipo de dados SQL. Isto pode ser um tipo de dado SQL ODBC ou um tipo de dado SQL específico do driver. Para tipos de dados data-hora ou intervalo, esta coluna devolve o tipo de dados conciso (como SQL_TYPE_TIME ou SQL_INTERVAL_YEAR_TO_MONTH). Para uma lista de tipos de dados válidos ODBC SQL, consulte Tipos de Dados SQL no Apêndice D: Tipos de Dados. Para informações sobre tipos de dados SQL específicos de cada driver, consulte a documentação do driver. |
| COLUMN_SIZE (ODBC 2.0) | 3 | Integer | O tamanho máximo da coluna que o servidor suporta para este tipo de dado. Para dados numéricos, esta é a precisão máxima. Para dados de cadeia, isto é o comprimento em caracteres. Para tipos de dados data-hora, este é o comprimento em caracteres da representação da cadeia (assumindo a precisão máxima permitida do componente de segundos fracionários). NULL é devolvido para tipos de dados onde o tamanho da coluna não é aplicável. Para tipos de dados de intervalo, este é o número de caracteres na representação de caracteres do literal do intervalo (conforme definido pela precisão de abertura do intervalo; ver Comprimento dos Tipos de Dados de Intervalo no Apêndice D: Tipos de Dados). Para mais informações sobre o tamanho da coluna, consulte Tamanho da Coluna, Dígitos Decimais, Comprimento do Octeto de Transferência e Tamanho do Ecrã no Apêndice D: Tipos de Dados. |
| LITERAL_PREFIX (ODBC 2.0) | 4 | Varchar | Carácter ou caracteres usados para prefixar um literal; por exemplo, uma única aspas (') para tipos de dados de caracteres ou 0x para tipos de dados binários; NULL é devolvido para tipos de dados onde um prefixo literal não é aplicável. |
| LITERAL_SUFFIX (ODBC 2.0) | 5 | Varchar | Caracter(es) usados para terminar um literal; por exemplo, uma única aspas (') para tipos de dados de caracteres; NULL é devolvido para tipos de dados onde um sufixo literal não é aplicável. |
| CREATE_PARAMS (ODBC 2.0) | 6 | Varchar | Uma lista de palavras-chave, separadas por vírgulas, correspondentes a cada parâmetro que a aplicação possa especificar entre parênteses ao usar o nome devolvido no campo TYPE_NAME. As palavras-chave na lista podem ser qualquer uma das seguintes: comprimento, precisão ou escala. Aparecem pela ordem em que a sintaxe exige que sejam usadas. Por exemplo, CREATE_PARAMS para DECIMAL seria "precisão, escala"; CREATE_PARAMS para VARCHAR seria igual a "comprimento". NULL é devolvido se não existirem parâmetros para a definição do tipo de dado; por exemplo, INTEIRO. O driver fornece o texto CREATE_PARAMS na língua do país/região onde é utilizado. |
| NULLABLE (ODBC 2.0) | 7 | Smallint not NULL | Se o tipo de dado aceita um valor NULL: SQL_NO_NULLS se o tipo de dado não aceitar valores NULL. SQL_NULLABLE se o tipo de dado aceitar valores NULL. SQL_NULLABLE_UNKNOWN se não se sabe se a coluna aceita valores NULL. |
| CASE_SENSITIVE (ODBC 2.0) | 8 | Smallint not NULL | Se um tipo de dado de carácter é sensível a maiúsculas minúsculas em colações e comparações: SQL_TRUE se o tipo de dado for um tipo de carácter e for sensível a maiúsculas e minúsculas. SQL_FALSE se o tipo de dado não for um tipo de carácter ou não for distinguível a maiúsculas e minúsculas. |
| PESQUISÁVEL (ODBC 2.0) | 9 | Smallint not NULL | Como o tipo de dado é usado numa cláusula WHERE : SQL_PRED_NONE se a coluna não puder ser usada numa cláusula WHERE . (Isto é o mesmo que o valor SQL_UNSEARCHABLE no ODBC 2. x.) SQL_PRED_CHAR se a coluna puder ser usada numa cláusula WHERE , mas apenas com o predicado LIKE . (Isto é igual ao valor SQL_LIKE_ONLY no ODBC 2. x.) SQL_PRED_BASIC se a coluna puder ser usada numa cláusula WHERE com todos os operadores de comparação exceto LIKE (comparação, comparação quantificada, BETWEEN, DISTINCT,IN, MATCH e UNIQUE). (Isto é igual ao valor SQL_ALL_EXCEPT_LIKE em ODBC 2. x.) SQL_SEARCHABLE se a coluna pode ser usada numa cláusula WHERE com qualquer operador de comparação. |
| UNSIGNED_ATTRIBUTE (ODBC 2.0) | 10 | Smallint | Se o tipo de dado é não assinado: SQL_TRUE se o tipo de dado não for assinado. SQL_FALSE se o tipo de dado estiver assinado. NULL é devolvido se o atributo não for aplicável ao tipo de dados ou se o tipo de dados não for numérico. |
| FIXED_PREC_SCALE (ODBC 2.0) | 11 | Smallint not NULL | Se o tipo de dado tem precisão e escala pré-definidas (que são específicas da fonte de dados), como um tipo de dado monetário: SQL_TRUE se tiver precisão e escala pré-definidas. SQL_FALSE se não tiver precisão e escala predefinidas. |
| AUTO_UNIQUE_VALUE (ODBC 2.0) | 12 | Smallint | Se o tipo de dado está a incrementar automaticamente: SQL_TRUE se o tipo de dado estiver a fazer autoincremento. SQL_FALSE se o tipo de dado não estiver a fazer autoincrementing. NULL é devolvido se o atributo não for aplicável ao tipo de dados ou se o tipo de dados não for numérico. Uma aplicação pode inserir valores numa coluna que tenha este atributo, mas normalmente não consegue atualizar os valores na coluna. Quando um inserto é transformado numa coluna de auto-incremento, um valor único é inserido na coluna no momento da inserção. O incremento não está definido, mas é específico da fonte de dados. Uma aplicação não deve assumir que uma coluna de auto-incremento começa num ponto específico ou incrementa por qualquer valor específico. |
| LOCAL_TYPE_NAME (ODBC 2.0) | 13 | Varchar | Versão localizada do nome dependente da fonte de dados do tipo de dado. NULL é devolvido se um nome localizado não for suportado pela fonte de dados. Este nome destina-se apenas à visualização, como em caixas de diálogo. |
| MINIMUM_SCALE (ODBC 2.0) | 14 | Smallint | A escala mínima do tipo de dado na fonte de dados. Se um tipo de dado tiver uma escala fixa, as colunas MINIMUM_SCALE e MAXIMUM_SCALE contêm ambas esse valor. Por exemplo, uma coluna de SQL_TYPE_TIMESTAMP pode ter uma escala fixa durante frações de segundos. NULL é devolvido onde a escala não é aplicável. Para mais informações, consulte Tamanho da Coluna, Dígitos Decimais, Comprimento do Octeto de Transferência e Tamanho do Ecrã no Apêndice D: Tipos de Dados. |
| MAXIMUM_SCALE (ODBC 2.0) | 15 | Smallint | A escala máxima do tipo de dado na fonte de dados. NULL é devolvido onde a escala não é aplicável. Se a escala máxima não for definida separadamente na fonte de dados, mas sim definida como igual à precisão máxima, esta coluna contém o mesmo valor da coluna COLUMN_SIZE. Para mais informações, consulte Tamanho da Coluna, Dígitos Decimais, Comprimento do Octeto de Transferência e Tamanho do Ecrã no Apêndice D: Tipos de Dados. |
| SQL_DATA_TYPE (ODBC 3.0) | 16 | Smallint NÃO NULL | O valor do tipo de dado SQL tal como aparece no campo SQL_DESC_TYPE do descritor. Esta coluna é igual à coluna DATA_TYPE, exceto para os tipos de dados de intervalo e data-hora. Para tipos de dados de intervalo e data-hora, o campo SQL_DATA_TYPE no conjunto de resultados devolverá SQL_INTERVAL ou SQL_DATETIME, e o campo SQL_DATETIME_SUB devolverá o subcódigo para o tipo específico de intervalo ou data-hora. (Ver Apêndice D: Tipos de Dados.) |
| SQL_DATETIME_SUB (ODBC 3.0) | 17 | Smallint | Quando o valor de SQL_DATA_TYPE é SQL_DATETIME ou SQL_INTERVAL, esta coluna contém o subcódigo data-hora/intervalo. Para tipos de dados que não sejam data-hora e intervalo, este campo é NULL. Para tipos de dados de intervalo ou data-hora, o campo SQL_DATA_TYPE no conjunto de resultados devolverá SQL_INTERVAL ou SQL_DATETIME, e o campo SQL_DATETIME_SUB devolverá o subcódigo para o tipo específico de intervalo ou data-hora. (Ver Apêndice D: Tipos de Dados.) |
| NUM_PREC_RADIX (ODBC 3.0) | 18 | Integer | Se o tipo de dados for um tipo numérico aproximado, esta coluna contém o valor 2 para indicar que COLUMN_SIZE especifica um número de bits. Para tipos numéricos exatos, esta coluna contém o valor 10 para indicar que COLUMN_SIZE especifica um número de dígitos decimais. Caso contrário, esta coluna é NULL. |
| INTERVAL_PRECISION (ODBC 3.0) | 19 | Smallint | Se o tipo de dado for um tipo de intervalo, então esta coluna contém o valor da precisão que lidera o intervalo. (Ver Precisão dos Tipos de Dados de Intervalo no Apêndice D: Tipos de Dados.) Caso contrário, esta coluna é NULA. |
A informação de atributos pode aplicar-se a tipos de dados ou a colunas específicas num conjunto de resultados. SQLGetTypeInfo devolve informações sobre atributos associados a tipos de dados; O SQLColAttribute devolve informações sobre atributos associados a colunas num conjunto de resultados.
Funções relacionadas
| Para obter informações sobre | Veja |
|---|---|
| Ligar um buffer a uma coluna num conjunto de resultados | Função SQLBindCol |
| Cancelamento do processamento de extratos | Função SQLCancel |
| Devolver informação sobre uma coluna num conjunto de resultados | Função SQLColAttribute |
| Buscar um bloco de dados ou percorrer um conjunto de resultados | Função SQLFetchScroll |
| Obter uma única linha ou um bloco de dados numa direção apenas direta | Função SQLFetch |
| Retorno de informação sobre um driver ou fonte de dados | Função SQLGetInfo |
Ver também
Referência de API ODBC
Ficheiros de Cabeçalho ODBC