Como acessar um banco de dados Oracle usando RDO

Traduções deste artigo Traduções deste artigo
ID do artigo: 167225 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Com o Visual Basic 5.0 e superior Enterprise edition, você tem a capacidade de se conectar a um banco de dados Oracle através de uma conexão DSN menor, executar um procedimento armazenado usando parâmetros e obter valores de retorno do procedimento armazenado. O exemplo neste artigo ilustra toda essa funcionalidade.

Mais Informações

O exemplo neste artigo é um projeto Visual Basic simples que cria uma conexão DSN-Less em um banco de dados Oracle e executa um procedimento armazenado. Ao trabalhar com Oracle e o Driver Microsoft ODBC para Oracle, há algumas configurações que são diferentes que trabalhar com o Microsoft SQL Server. Essas diferenças ocorrem porque você está usando um driver ODBC diferente.

O Visual Basic 5.0 e superior Enterprise edition inclui RDO 2.0 e o Driver Microsoft ODBC para Oracle. Ambos precisam ser instalados para executar o projeto de exemplo neste artigo.

Observação : O ODBC driver do Oracle não dá suporte todo o RDO 2.0 recurso conjunto (incluindo a chamada de procedimentos armazenados e valores de retorno de ligação).

O exemplo a seguir foi criado em um banco de dados Oracle 7.3 através de um SQL * NET 2.3 conexão. Todo o código seguinte (incluindo o procedimento armazenado) deve funcionar bem com Oracle 7.2. Mas, o driver para o arquivo de Ajuda Oracle ODBC da Microsoft afirma que ele oferece suporte apenas a SQL * NET 2.3

Há dois objetos que precisam ser criados no banco de dados Oracle; uma tabela (rdooracle) e um procedimento armazenado (rdoinsert). A seguir estão os scripts DDL (linguagem) de definição de dados para criar esses objetos:
  • RDOORACLE: É apenas uma tabela de duas colunas com a primeira coluna definido como chave primária:
          CREATE TABLE rdooracle (
                    item_number    NUMBER(3) PRIMARY KEY,
                    depot_number   NUMBER(3));
    					
  • RDOINSERT: Esse procedimento aceita um único parâmetro de entrada numérico e retorna um parâmetro de saída numérico simples. Em seguida o parâmetro de entrada é usado por uma instrução de entrada pela primeira vez, ela é dividida por 2 e definir como o parâmetro de saída:
          CREATE OR REPLACE PROCEDURE rdoinsert
             (insnum IN NUMBER, outnum OUT NUMBER)
          IS
          BEGIN
          INSERT INTO rdooracle
             (Item_Number, Depot_Number)
          VALUES
             (insnum, 16);
          outnum := insnum/2;
          END;
    					
Observação : você deve usar funções não e procedimentos que tenham parâmetros de saída ao trabalhar com Oracle e RDO parâmetros de espaço reservado.

Os scripts acima podem ser executados do SQL * mais ou de dentro do Visual Database ferramentas Add-in na edição Enterprise do Visual Basic 5.0. Uma vez que esses objetos foram criados, você pode criar o projeto de Visual Basic irá usá-los.

Exemplo passo a passo

Este projeto de exemplo usa um formulário simples para enviar que um parâmetro de ligação para o RDOINSERT procedimento armazenado e, em seguida, retornar o parâmetro de saída desse procedimento. Aqui estão as etapas para criar o projeto:
  1. Abra um novo projeto no Visual Basic 5.0 Enterprise edition. O Form1 é criado por padrão.
  2. Posicione o seguinte os controles no formulário:
          Control     Name     Text/Caption
          ---------------------------------
          Button      cmdCheck  Check
          Button      cmdSend   Send
          Text Box    txtInput
          Label       lblInput  Input:
    					
  3. No menu Ferramentas , selecione o item Opções . Clique na opção de Visualizar módulo completo padrão e, em seguida, clique em OK . Isso permitirá que você visualize todo o código para este projeto.
  4. Cole o código seguinte na sua janela de código:
          Option Explicit
          Dim Cn As rdoConnection
          Dim En As rdoEnvironment
          Dim CPw As rdoQuery
          Dim Rs As rdoResultset
          Dim Conn As String
          Dim QSQL As String
          Dim Response As String
          Dim Prompt As String
    
          Private Sub cmdCheck_Click()
    
              QSQL = "Select Item_Number, Depot_Number From rdooracle Where " _
              & "item_number =" & txtInput.Text
              Set Rs = Cn.OpenResultset(QSQL, rdOpenStatic, , rdExecDirect)
    
              Prompt = "Item_Number = " & Rs(0) & ".  Depot_Number = " _
              & Rs(1) & "."
    
              Response = MsgBox(Prompt, , "Query Results")
    
              Rs.Close
    
          End Sub
    
          Private Sub cmdSend_Click()
    
              CPw(0) = Val(txtInput.Text)
              CPw.Execute
    
              Prompt = "Return value from stored procedure is " & CPw(1) & "."
              Response = MsgBox(Prompt, , "Stored Procedure Result")
    
          End Sub
    
          Private Sub Form_Load()
    
              Conn = "UID=;PWD=;driver={Microsoft ODBC Driver for Oracle};" _
                   & "CONNECTSTRING=MyOracle;"
    
              Set En = rdoEnvironments(0)
              Set Cn = En.OpenConnection("", rdDriverPrompt, False, Conn)
              QSQL = "{call rdoinsert(?,?)}"
              Set CPw = Cn.CreateQuery("", QSQL)
    
          End Sub
    
          Private Sub Form_Unload(Cancel As Integer)
    
              En.Close
    
          End Sub
    
    					
  5. Execute o projeto.
Quando você insere um número na caixa de texto, txtInput e clique no botão "Enviar", o procedimento armazenado Oracle, RDOINSERT, é chamado. O número inserido no texto da caixa é usada como o parâmetro de entrada para o procedimento. O parâmetro de saída é usado em uma caixa de mensagem que é chamada após o procedimento armazenado concluiu o processamento. Com seu valor original ainda na caixa de texto, clique no botão "Verificação". Isso cria um simples resultset somente leitura é exibido em outra caixa de mensagem.

A seguir está uma explicação detalhada do código usada no projeto demonstração:

O evento Form_Load contém o código que cria a conexão DSN menor. Ele também contém o código que cria a consulta que chama o procedimento armazenado:
    Private Sub Form_Load()

       Conn = "UID=;PWD=;driver={Microsoft ODBC Driver for Oracle};" _
            & "CONNECTSTRING=MyOracle;"

       Set En = rdoEnvironments(0)
       Set Cn = En.OpenConnection("", rdDriverPrompt, False, Conn)
       QSQL = "{call rdoinsert(?,?)}"
       Set CPw = Cn.CreateQuery("", QSQL)

   End Sub
				
anotação que você não estiver usando o objeto rdPreparedStatement. Este objeto foi substituído pelo objeto rdoQuery. Isso é novo para o RDO 2.0. Além disso, com o RDO 2.0, você não precisa criar explicitamente um objeto de conexão como é feito neste projeto. Você pode criar um objeto de consulta autônomo que não está especificamente associado com uma conexão. Para obter mais informações sobre essa funcionalidade, pesquise rdoQuery objeto no arquivo de Ajuda de edição Enterprise do Visual Basic 5.0.

A seqüência de conexão usada para abrir uma conexão com um banco de dados Oracle (ou qualquer banco de dados) depende muito o driver ODBC subjacente. Embora semelhantes parâmetros são usados por maioria dos drivers ODBC (UID, PWD, etc.), a seqüência de conexão usada aqui funcionará somente com o driver ODBC da Microsoft para Oracle:
Conn = "UID=;PWD=;driver={Microsoft ODBC Driver for Oracle};" _
            & "CONNECTSTRING=MyOracle;"
				
a parte mais importante dessa seqüência de conexão é a palavra-chave "CONNECTSTRING". Ele é usado somente pelo controlador ODBC da Microsoft para Oracle. Para Microsoft SQL Server 6.5, você usar a palavra-chave "SERVER". A seqüência atribuída a CONNECTSTRING é o alias de banco de dados que você configurou no SQL * NET. Essa é a única diferença na seqüência de caracteres de conexão ao se conectar a um banco de dados Oracle. Todos os outros parâmetros de operam como descrito no arquivo Ajuda (em rdoConnection Object) para edição Enterprise do Visual Basic 5.0. Conforme mencionado no arquivo de Ajuda, para uma conexão, você não especificar um DSN na seqüência de caracteres de conexão.

Também no Form_Load evento é o código que cria o objeto de consulta que chama o procedimento armazenado:
   QSQL = "{call rdoinsert(?,?)}"
   Set CPw = Cn.CreateQuery("", QSQL)
				
com Oracle, você não é possível especificar um valor de retorno para uma chamada de procedimento armazenado como faria com o Microsoft SQL Server 6.5; você deve usar procedimentos armazenados que tem saída parâmetros conforme descrito neste artigo. Os espaços reservados parâmetro na seqüência de caracteres QSQL são indicados por um "?" e referenciado na ordem em que eles em que aparecem na seqüência de caracteres. Para obter mais informações sobre o uso de espaços reservados de parâmetro em objeto rdoQuery, consulte o objeto rdoParameter no arquivo de Ajuda Visual Basic 5.0 Enterprise edition.

O restante do projeto é bastante reta encaminhamento e bem documentadas no arquivo de Ajuda on-line e Books Online, que vêm com o Visual Basic 5.0. Os problemas RDO fundamentais para trabalhar com Oracle, a seqüência de conexão e a chamada de procedimentos armazenados tem sido detalhados neste projeto. Para obter mais informações sobre essas questões, consulte o Oracle SQL * NET 2.3 documentação, o arquivo de Ajuda para o Driver Microsoft ODBC para Oracle e a documentação do servidor Oracle 7.

Referências

Arquivos de Ajuda do Visual Basic 5.0 Enterprise Edition

O Oracle SQL * NET 2.3 ajuda arquivo

Hitchhiker Guide to Visual Basic e SQL Server - quarta edição.

Propriedades

ID do artigo: 167225 - Última revisão: quarta-feira, 2 de março de 2005 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbhowto kboracle KB167225 KbMtpt
Tradução automática
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.
Clique aqui para ver a versão em Inglês deste artigo: 167225

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com