Compartilhar via


Função JetRetrieveColumns

Aplica-se a: Windows | servidor Windows

Função JetRetrieveColumns

A função JetRetrieveColumns recupera vários valores de coluna do registro atual em uma única operação. Uma matriz de estruturas JET_RETRIEVECOLUMN é usada para descrever o conjunto de valores de coluna a serem recuperados e para descrever buffers de saída para cada valor de coluna a ser recuperado.

    JET_ERR JET_API JetRetrieveColumns(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in_out_opt  JET_RETRIEVECOLUMN* pretrievecolumn,
      __in          unsigned long cretrievecolumn
    );

Parâmetros

sesid

A sessão a ser usada para esta chamada.

Tableid

O cursor a ser usado para essa chamada.

pretrievecolumn

Um ponteiro para uma matriz de uma ou mais estruturas JET_RETRIEVECOLUMN . Cada estrutura inclui descrições de qual valor de coluna recuperar e onde armazenar dados retornados.

cretrievecolumn

O número de estruturas JET_RETRIEVECOLUMN na matriz fornecida por pretrievecolumn.

Valor de retorno

Essa função retorna o tipo de dados JET_ERR com um dos seguintes códigos de retorno. Para obter mais informações sobre os possíveis erros do ESE, consulte Erros extensíveis Armazenamento mecanismo e parâmetros de tratamento de erros.

Código de retorno

Descrição

JET_errSuccess

A operação foi concluída com sucesso.

JET_errBadItagSequence

Um valor de número de sequência de colunas com valores múltiplos inválidos foi passado em pretinfo-itagSequence>. Os valores válidos para os números de sequência de valores de coluna com valores de coluna com valores múltiplos são 1 ou maior. Um valor de 0 (zero) é válido para essa função, mas é inválido para JetRetrieveColumn.

JET_errBadColumnId

A ID da coluna fornecida está fora dos limites legais de uma ID de coluna.

JET_errClientRequestToStopJetService

Não é possível concluir a operação porque toda a atividade na instância associada à sessão cessou como resultado de uma chamada ao JetStopService.

JET_errColumnNotFound

A coluna descrita pela columnid fornecida não existe na tabela.

JET_errIndexTuplesCannotRetrieveFromIndex

Colunas indexadas como subcadeias de caracteres não podem ser recuperadas do índice, pois apenas uma pequena parte da coluna normalmente está presente em cada entrada de índice.

JET_errInvalidBufferSize

Em alguns casos, o buffer fornecido para a coluna de recuperação deve ser dimensionado suficientemente para retornar qualquer quantidade do valor da coluna. Por exemplo, as colunas atualizáveis de escrow são ajustadas para serem consistentes para o contexto transacional da sessão de chamada e esse ajuste requer o buffer fornecido pelo chamador. Se o espaço em buffer insuficiente for fornecido, JET_errInvalidBufferSize será retornado e nenhum dado de coluna será retornado.

JET_errInvalidgrbit

As opções fornecidas são desconhecidas ou uma combinação ilegal de configurações de bits conhecidas.

JET_errInvalidParameter

Um ou mais dos parâmetros dados estão incorretos. Isso pode acontecer se o retinfo.cbStruct for menor que o tamanho da JET_RETINFO.

JET_errInstanceUnavailable

Não é possível concluir a operação porque a instância associada à sessão encontrou um erro fatal que exige que o acesso a todos os dados seja revogado para proteger a integridade desses dados.

Windows XP: esse erro só será retornado por Windows XP e versões posteriores.

JET_errNoCurrentRecord

O cursor não está posicionado em um registro. Isso pode ocorrer por vários motivos diferentes. Por exemplo, isso ocorrerá se o cursor estiver posicionado após o último registro no índice atual.

JET_errNotInitialized

Não é possível concluir a operação porque a instância associada à sessão ainda não foi inicializada.

JET_errRestoreInProgress

Não é possível concluir a operação porque uma operação de restauração está em andamento na instância associada à sessão.

JET_errSessionSharingViolation

A mesma sessão não pode ser usada para mais de um thread ao mesmo tempo.

Windows XP: esse erro só será retornado por Windows XP e versões posteriores.

JET_errTermInProgress

Não é possível concluir a operação porque a instância associada à sessão está sendo desligada.

JET_wrnBufferTruncated

Não foi possível recuperar todo o valor da coluna porque o buffer fornecido é menor que o tamanho da coluna.

Com êxito, os dados das colunas e o tamanho da coluna são retornados em buffers fornecidos descritos na matriz de estruturas JET_RETRIEVECOLUMN . Se uma itagSequence foi definida como 0 (zero) para indicar que o número de instâncias de um campo com valores múltiplos foi desejado em vez de dados de coluna, o número de instâncias de uma coluna com valores múltiplos será retornado no próprio campo itagSequence . Cada estrutura JET_RETRIEVECOLUMN tem um campo de erro que contém avisos para a coluna recuperada. Se a coluna tiver sido valor NULL , o código de erro será definido como JET_wrnColumnNull.

Em caso de falha, o local do cursor é deixado inalterado e nenhum dado é copiado para o buffer fornecido.

Comentários

JetRetrieveColumns dá suporte a um recurso que JetRetrieveColumn não dá. Essa é a capacidade de recuperar o número de instâncias de uma coluna com valores múltiplos. A finalidade desse recurso é permitir que um aplicativo recupere todos os valores de uma coluna. Isso pode ser feito determinando primeiro o número de valores que uma coluna tem. Em seguida, seus comprimentos podem ser determinados chamando JetRetrieveColumns novamente com um JET_RETRIEVECOLUMN estrutura alocada para cada valor para determinar o comprimento dos dados de coluna. Isso pode ser feito passando ponteiros NULLpvData com cbMax de 0 (zero) e recuperando o comprimento da coluna no cbActual. A terceira e a última chamada podem ser feitas com memória alocada para os dados de valor da coluna.

Se qualquer coluna recuperada for truncada devido a um buffer de comprimento insuficiente, a API retornará JET_wrnBufferTruncated. No entanto, outros erros JET_wrnColumnNull são retornados somente no campo de erro no JET_RETRIEVECOLUMN. O motivo para isso é que os aplicativos geralmente querem garantir que todos os dados foram recuperados e retornar esse erro do JetRetrieveColumns facilita esse entendimento.

Requisitos

Requisito Valor

Cliente

Requer Windows Vista, Windows XP ou Windows 2000 Professional.

Servidor

Requer Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Consulte Também

JET_ERR
JET_SESID
JET_TABLEID
JET_RETRIEVECOLUMN
JetEnumerateColumns
JetRetrieveColumn
JetSetColumns