Entrar

CORRECÇÃO: IN e cláusulas UNION produção contagem incorreta de coluna

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

283842
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Com o Microsoft OLE DB Provider para Oracle (MSDAORA), a execução de uma instrução SQL que contém um IN e uma cláusula UNION pode produzir um objeto ActiveX Data Objects (ADO) Recordset que contém um número incorreto de colunas.

Esse problema ocorre ao usar um cursor do ADO do lado do cliente (o que significa que a propriedade CursorLocation é definida como adUseClient ), mas funciona corretamente ao usar um cursor do lado do servidor.
Resolução
Para resolver esse problema, obtenha o service pack mais recente para o Microsoft MDAC 2.5. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
293312INFO: Como obter o último MDAC 2.5 Service Pack
Para resolver esse problema, obtenha o service pack mais recente para o Microsoft Data Access Components 2.6. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
300635INFO: Como obter o último MDAC 2.6 Service Pack

Hotfix

A versão em inglês dessa correção deve ter os seguintes atributos de arquivo ou posteriores:
   Version       Size      File name     Platform   -------------------------------------------------------   2.53.6007.0   209,168   Msdaora.dll   x86				
Como Contornar
O problema não ocorre se você usar um cursor do lado do servidor; a propriedade CursorLocation é definida para adUseServer .
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no Microsoft Data Access Components 2.6 Service Pack 2, o MDAC 2.5 SP3 e o MDAC 2.7.
Mais Informações

Passos para reproduzir o problema

  1. Adicione o código a seguir em um novo projeto Visual Basic e defina uma referência de projeto para Microsoft ActiveX Data Objects 2.5 Library:
    Private Sub Command1_Click()    Dim cn As New ADODB.Connection    Dim rs As New ADODB.Recordset    cn.Open "Provider=MSDAORA;Data Source=your_oracle_server;User ID=your_user_name;Password=your_password"    On Error Resume Next    cn.Execute "Drop table oratest"    cn.Execute "CREATE TABLE ORATEST(Col1 VARCHAR2(10) NULL," & _               "Col2 VARCHAR2(10) NULL)"    cn.Execute "insert into oratest values(7,7)"    cn.Execute " insert into oratest values(6,6)"    cn.Execute "Drop table DUAL"    cn.Execute "CREATE TABLE DUAL(C11 VARCHAR2(10) NULL," & _               "C12 VARCHAR2(10) NULL)"    cn.Execute "insert into dual values(6,7)"    rs.CursorLocation = adUseClient    rs.Open "select col1, col2 from oratest where col1 in (Select C11 from dual union select C12 from dual)", _            cn, adOpenStatic,adLockBatchOptimistic        Debug.Print rs.Fields.Count      '<--- incorrect column count           Debug.Print rs.Fields(0).Name    Debug.Print rs.Fields(1).NameEnd Sub					
  2. Quando você executar o projeto acima, um número incorreto de colunas é exibido. Você também pode ver o erro "Objeto estava aberto" quando você observar a contagem de campos do conjunto de registros na janela Watch Visual Basic. Nesse caso, a linha "Debug.Print rs.Fields.Count" não imprima qualquer resultado na janela Verificação imediata.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 283842 - Última Revisão: 01/05/2015 12:56:33 - Revisão: 6.1

  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.6
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kboracle kbprovider KB283842 KbMtpt
Comentários