Como usar um DataReader contra um Oracle procedimento armazenado no Visual translation from VPE for Csharp .NET

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: 309361
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 308073.
Para uma versão deste artigo do Microsoft Visual C++. NET, consulte 309362.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.Data.OLEDB

NESTA TAREFA

Sumário
Este artigo passo a passo usa o objeto DataReader para recuperar dados de um procedimento armazenado Oracle. Você pode usar o DataReader para recuperar um fluxo somente leitura, somente de encaminhamento de dados de um banco de dados. Usar o DataReader pode aumentar o desempenho do aplicativo e reduzir a sobrecarga do sistema porque apenas uma linha é mantida na memória.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • O Visual translation from VPE for Csharp .NET
  • Conceitos básicos do ADO.NET e sintaxe
back to the top

Criar tabelas Oracle

Este exemplo utiliza tabelas que são definidas no esquema Oracle Scott/Tiger. O esquema do Oracle Scott/Tiger é incluído com a instalação padrão do Oracle.

Se este esquema não existir, você deve executar a tabela a seguir e inserir scripts para as tabelas:
   CREATE TABLE DEPT   (DEPTNO NUMBER(2,0) NOT NULL,    DNAME VARCHAR2(14) NULL,    LOC VARCHAR2(13) NULL,   PRIMARY KEY (DEPTNO)   );   INSERT INTO Dept VALUES(11,'Sales','Texas');   INSERT INTO Dept VALUES(22,'Accounting','Washington');   INSERT INTO Dept VALUES(33,'Finance','Maine');   CREATE TABLE EMP   (EMPNO NUMBER(4,0) NOT NULL,    ENAME VARCHAR2(10) NULL,    JOB VARCHAR2(9) NULL,    MGR NUMBER(4,0) NULL,    SAL NUMBER(7,2) NULL,    COMM NUMBER(7,2) NULL,    DEPTNO NUMBER(2,0) NULL,   FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO),     PRIMARY KEY (EMPNO)   );   INSERT INTO Emp VALUES(123,'Bob','Sales',555,35000,12,11);   INSERT INTO Emp VALUES(321,'Sue','Finance',555,42000,12,33);   INSERT INTO Emp VALUES(234,'Mary','Account',555,33000,12,22);				
back to the top

Criar pacotes para o Oracle

Crie o seguinte pacote Oracle no servidor Oracle:
CREATE OR REPLACE PACKAGE curspkg_join AS    	TYPE t_cursor IS REF CURSOR ;    	Procedure open_join_cursor1 (n_EMPNO IN NUMBER, io_cursor IN OUT t_cursor);    END curspkg_join;   / 				
criar o corpo de pacote Oracle seguinte no servidor Oracle:
   CREATE OR REPLACE PACKAGE BODY curspkg_join AS   Procedure open_join_cursor1 (n_EMPNO IN NUMBER, io_cursor IN OUT t_cursor)    IS    	v_cursor t_cursor;    BEGIN    	IF n_EMPNO <> 0    	THEN   		OPEN v_cursor FOR    		SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME    			FROM EMP, DEPT    			WHERE EMP.DEPTNO = DEPT.DEPTNO    			AND EMP.EMPNO = n_EMPNO;   	ELSE    		OPEN v_cursor FOR    		SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME    			FROM EMP, DEPT    			WHERE EMP.DEPTNO = DEPT.DEPTNO;   	END IF;   	io_cursor := v_cursor;    END open_join_cursor1;    END curspkg_join;   / 				
back to the top

Criar o aplicativo do .NET translation from VPE for Csharp Visual

  1. Crie um novo projeto do Visual translation from VPE for Csharp Windows Application. Form1 é adicionado para o projeto por padrão.
  2. Adicione o código a seguir na parte superior da janela código:
    using System.Data.OleDb;					
  3. Adicione o seguinte código ao evento Form_Load do Form1:
    OleDbConnection Oraclecon = new OleDbConnection("Provider=MSDAORA.1;Password=tiger;"              + "User ID=scott;Data Source=OracleServer;Persist Security Info=True");Oraclecon.Open();OleDbCommand myCMD =  new OleDbCommand("{call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}", Oraclecon);myCMD.Parameters.Add("ID", OleDbType.Numeric, 4).Value = 0;OleDbDataReader myReader;myReader = myCMD.ExecuteReader();int x; int count;count = 0;while (myReader.Read())				{		for (x = 0; x <= myReader.FieldCount - 1; x++) 		Console.Write(myReader.GetValue(x) + " ");      	Console.WriteLine();	count += 1;}MessageBox.Show(count + " Rows Returned.");myReader.Close();Oraclecon.Close();					
  4. Modificar a seqüência OleDbConnection conforme apropriado para seu ambiente.
  5. Pressione a tecla F5 para compilar e executar o aplicativo. Observe que os dados do procedimento armazenado Oracle aparece na janela e uma contagem de linha aparecerá em uma caixa de mensagem.
back to the top

Informações adicionais

Observe que o código percorre o DataReader :
while (myReader.Read())				
é porque o DataReader lê apenas uma linha por vez.

back to the top
Referências
Para obter informações adicionais % 1, clique no número % 2 abaixo para ler o artigo % 2 na Base de dados de Conhecimento da Microsoft:
176086Como recuperar Recordsets do Oracle armazenados procedimentos usando o ADO
Para obter mais informações sobre o DataReader , consulte o tópico a seguir na documentação do Software Development Kit (SDK) do Microsoft .NET: back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 309361 - Última Revisão: 07/15/2004 15:59:53 - Revisão: 2.3

Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbmt kbhowtomaster kbsystemdata KB309361 KbMtpt
Comentários