SQLColumns
SQLColumns retorna SQL_SUCCESS independentemente de haver valores para os parâmetros CatalogName, TableName ou ColumnName. SQLFetch retorna SQL_NO_DATA quando são usados valores inválidos nesses parâmetros.
Observação |
---|
Para tipos de valores grandes, os parâmetros de todos os comprimentos serão retornados com um valor SQL_SS_LENGTH_UNLIMITED. |
É possível executar SQLColumns em um cursor de servidor estático. Uma tentativa de executar o SQLProcedures em um cursor atualizável (dinâmico ou conjunto de chaves) retornará SQL_SUCCESS_WITH_INFO, indicando que o tipo de cursor foi alterado.
O driver ODBC do SQL Server Native Client dá suporte ao relatório de informações de tabelas em servidores vinculados, aceitando um nome de duas partes para o parâmetro CatalogName: Linked_Server_Name.Catalog_Name.
Para aplicativos ODBC 2.x que não usam curingas em TableName, SQLColumns retorna informações sobre quaisquer tabelas cujos nomes correspondem ao TableName e que são de propriedade do usuário atual. Se o usuário atual não possuir nenhuma tabela cujo nome corresponde ao parâmetro TableName, SQLColumns retornará informações sobre quaisquer tabelas de propriedade de outros usuários cujos nomes de tabela correspondam ao parâmetro TableName. Para aplicativos ODBC 2.x que usam curingas, SQLColumns retorna todas as tabelas cujo nomes correspondem ao TableName. Para aplicativos ODBC 3.x, SQLColumns retorna todas as tabelas cujos nomes correspondem ao TableName, independentemente do proprietário ou da utilização de curingas.
A tabela a seguir lista as colunas retornadas pelo conjunto de resultados:
Nome da coluna |
Descrição |
---|---|
DATA_TYPE |
Retorna SQL_VARCHAR, SQL_VARBINARY ou SQL_WVARCHAR para os tipos de dados varchar(max). |
TYPE_NAME |
Retorna “varchar”, “varbinary” ou “nvarchar” para os tipos de dados varchar(max), varbinary(max) e nvarchar(max). |
COLUMN_SIZE |
Retorna SQL_SS_LENGTH_UNLIMITED para os tipos de dados varchar(max), indicando que o tamanho da coluna é ilimitado. |
BUFFER_LENGTH |
Retorna SQL_SS_LENGTH_UNLIMITED para os tipos de dados varchar(max), indicando que o tamanho do buffer é ilimitado. |
SQL_DATA_TYPE |
Retorna SQL_VARCHAR, SQL_VARBINARY ou SQL_WVARCHAR para os tipos de dados varchar(max). |
CHAR_OCTET_LENGTH |
Retorna o comprimento máximo de uma coluna char ou binary. Retorna 0 para indicar que o tamanho é ilimitado. |
SS_XML_SCHEMACOLLECTION_CATALOG_NAME |
Retorna o nome do catálogo no qual é definido o nome de uma coleção de esquemas XML. Se não for possível localizar o nome do catálogo, essa variável conterá uma cadeia de caracteres vazia. |
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME |
Retorna o nome do esquema no qual é definido o nome de uma coleção de esquemas XML. Se não for possível localizar o nome do esquema, essa variável conterá uma cadeia de caracteres vazia. |
SS_XML_SCHEMACOLLECTION_NAME |
Retorna o nome de uma coleção de esquemas XML. Se não for possível localizar o nome, essa variável conterá uma cadeia de caracteres vazia. |
SS_UDT_CATALOG_NAME |
O nome do catálogo que contém o UDT (tipo definido pelo usuário). |
SS_UDT_SCHEMA_NAME |
O nome do esquema que contém o UDT. |
SS_UDT_ASSEMBLY_TYPE_NAME |
O nome qualificado do assembly do UDT. |
Para UDTs, a coluna TYPE_NAME existente é usada para indicar o nome do UDT; assim, nenhuma coluna adicional deve ser adicionada para ele no conjunto de resultados de SQLColumns ou SQLProcedureColumns. O DATA_TYPE de uma coluna ou parâmetro UDT é SQL_SS_UDT.
Para o UDT de parâmetros, você pode usar os novos descritores específicos do driver definidos acima para obter ou definir as propriedades extra de metadados de um UDT, caso o servidor retorne ou exija essas informações.
Quando um cliente se conecta ao SQL Server e chama SQLColumns, o uso de valores curinga ou NULL para o parâmetro de entrada do catálogo não retornará informações de outros catálogos. Em vez disso, serão retornadas apenas informações sobre o catálogo atual. O cliente pode chamar SQLTables primeiro para determinar em qual catálogo está localizada a tabela desejada. Em seguida, o cliente pode usar o valor do catálogo para o parâmetro de entrada do catálogo na chamada de SQLColumns a fim de recuperar informações sobre as colunas nessa tabela.
SQLColumns e parâmetros com valor de tabela
O conjunto de resultados retornado por SQLColumns depende da configuração de SQL_SOPT_SS_NAME_SCOPE. Para obter mais informações, consulte SQLSetStmtAttr. As colunas a seguir foram adicionadas para parâmetros com valor de tabela:
Nome da coluna |
Tipo de dados |
Sumário |
---|---|---|
SS_IS_COMPUTED |
Smallint |
Para uma coluna em um TABLE_TYPE, será SQL_TRUE se a coluna for uma coluna computada; caso contrário, SQL_FALSE. |
SS_IS_IDENTITY |
Smallint |
SQL_TRUE se a coluna for uma coluna de identidade; caso contrário, SQL_FALSE. |
Para obter mais informações sobre parâmetros com valor de tabela, consulte Parâmetros com valor de tabela (ODBC).
Suporte de SQLColumns a recursos aprimorados de data e hora
Para obter informações sobre os valores retornados para tipos de data/hora, consulte Metadados de catálogo.
Para obter mais informações, consulte Aprimoramentos de data/hora (ODBC).
Suporte de SQLColumns para UDTs CLR grandes
SQLColumns dá suporte a UDTs CLR grandes. Para obter mais informações, consulte Tipos de dados CLR grandes definidos pelo usuário (ODBC).
Suporte de SQLColumns para colunas esparsas
Duas colunas específicas do SQL Server foram adicionadas ao conjunto de resultados para SQLColumns:
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
SS_IS_SPARSE |
Smallint |
Se a coluna for uma coluna esparsa, será SQL_TRUE; caso contrário, SQL_FALSE. |
SS_IS_COLUMN_SET |
Smallint |
Se a coluna for a coluna column_set, será SQL_TRUE; caso contrário, SQL_FALSE. |
De acordo com a especificação de ODBC, SS_IS_SPARSE e SS_IS_COLUMN_SET aparecem antes de todas as colunas específicas do driver adicionadas em versões do SQL Server anteriores ao SQL Server 2008 e depois de todas as colunas autorizadas pelo próprio ODBC.
O conjunto de resultados retornado por SQLColumns depende da configuração de SQL_SOPT_SS_NAME_SCOPE. Para obter mais informações, consulte SQLSetStmtAttr.
Para obter mais informações sobre colunas esparsas no ODBC, consulte Suporte a colunas esparsas (ODBC).