Você está offline; aguardando reconexão

Como obter o conjunto de registos ADO do Oracle através do ASP utilizar CURSORES REF

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 255043
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
Com a versão do Microsoft Data Access Components (MDAC) 2.5, o fornecedor de OLEDB Microsoft para Oracle suporta agora a devolução de conjuntos de registos do ActiveX Data Objects (ADO) a partir de um procedimento de Oracle através da utilização de um tipo de CURSOR REF. Esta funcionalidade só é suportada no fornecedor de OLEDB Microsoft para Oracle. O Microsoft ODBC para Oracle controlador não suporta a utilização de CURSORES REF.
Mais Informação
Esta nova funcionalidade tem algumas vantagens sobre o fornecedor anterior:
  • Nas versões anteriores do fornecedor a única forma de obter um conjunto de registos ADO a partir de um procedimento de Oracle era declarar uma tabela PL/SQL para cada coluna que foi devolvida no conjunto de registos. Com o novo fornecedor que necessita apenas de declarar um CURSOR REF, em seguida, que processa a devolução de todas as colunas.

    Para obter informações adicionais na obtenção de procedimentos de Oracle em tabelas PL/SQL, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
    229919Como obter um conjunto de registos da Oracle utilizando ADO no ASP
  • Na versão anterior do fornecedor tinha de especificar o número máximo de registos que devolveria no conjunto de registos. Quando abre um conjunto de registos ADO baseia-se um CURSOR REF, esse passo já não é necessário. Com o novo fornecedor pode apenas especificar 0 para o número de registos. Por exemplo:

    {call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}					
Para utilizar o exemplo neste artigo:
  • Deverá ser proficient com o Microsoft Visual Basic Scripting Edition (VBScript), ActiveX Data Objects (ADO) e Active Server Pages (ASP).

  • Se criar pacotes de Oracle, tem de compreender procedimentos idioma/Structured Query Language do Oracle.

  • O Internet Information Server (IIS) terá de configurar correctamente para trabalhar com a base de dados Oracle.

    Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
    193225Como configurar o IIS para ligar a Oracle a partir de ASP e ADO

Código de exemplo

O código de exemplo seguinte demonstra como obter um conjunto de registos ADO a partir de um procedimento de Oracle através de um CURSOR REF e, em seguida, apresenta os dados numa página ASP. Tem de modificar a cadeia de ligação OLEDB utilizada em código ASP para ligar à base de dados Oracle.

  1. Crie o pacote Oracle seguinte no servidor Oracle antes de executar qualquer código ASP. Este pacote utiliza algumas tabelas definidas no esquema Oracle Scott/Tiger. O esquema de Oracle Scott/Tiger é instalado com a instalação de Oracle predefinida. Se este esquema não existir, tem de executar os seguintes scripts de tabela e inserir algumas informações de tabelas:

    scripts de tabela
    CREATE TABLE DEPT(DEPTNO NUMBER(2,0) NOT NULL, DNAME VARCHAR2(14) NULL, LOC VARCHAR2(13) NULL,PRIMARY KEY (DEPTNO));CREATE TABLE EMP(EMPNO NUMBER(4,0) NOT NULL, ENAME VARCHAR2(10) NULL, JOB VARCHAR2(9) NULL, MGR NUMBER(4,0) NULL, HIREDATE DATE 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));						

    scripts de pacote
    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;/ CREATE OR REPLACE PACKAGE BODY curspkg_join ASProcedure 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;/ 						
  2. Segue-se o script ASP que chama o procedimento anterior:
    <%@ Language=VBScript %><HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"></HEAD><BODY><P><%	Const CONNECT = "Provider=MSDAORA.1;Data Source=your_tns_alias_name;User ID=scott;Password=tiger"			Dim cn, rs, cmd, param	Dim SQL	set cn = Server.CreateObject( "ADODB.Connection" )	cn.Open CONNECT		SQL = "{call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}"	set cmd = server.CreateObject ("ADODB.Command")	with cmd		set .ActiveConnection	= cn	    .CommandText			= SQL	    .CommandType			= 1		'adCmdText	    'Pass in 0 to retrieve all of the records	    set param = .CreateParameter("id", 131 , 1 , , 0)  '<<131=adNumeric, 1=adParamInput	    .Parameters.Append param	end with						set rs = server.CreateObject ( "ADODB.Recordset" ) 	set rs = cmd.execute		    	%>	<TABLE WIDTH="80%" ALIGN=center BORDER=1 CELLSPACING=3 CELLPADDING=3>	<%	Response.Write ("<TR bgcolor=Gray>")	For i = 0 To rs.Fields.Count - 1		Response.Write ("<TD>" & rs.Fields(i).Name & "</TD>")	Next	Response.Write ("</TR>")	Do until rs.EOF		response.write ("<TR>")		for i = 0 to rs.Fields.Count - 1			If IsNull(rs(i).value) then 				Response.Write ("<TD> NULL </TD>")			else 				Response.Write ("<TD>" & rs(i).value & "</TD>")			end if 		next 		rs.MoveNext		response.write ("</TR>")	loop	%>	</TABLE>	<%	Set cmd = Nothing	Set param = Nothing	rs.close	Set rs = Nothing	cn.close	Set cn = Nothing%></P></BODY></HTML>						
Referências
Para mais informações sobre o MDAC, consulte o seguinte Web site: Documentação Oracle8 Enterprise Edition
REF_CURSOR

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 255043 - Última Revisão: 05/17/2007 10:33:26 - Revisão: 3.3

Microsoft OLE DB Provider for Oracle Server 1.0

  • kbmt kbhowto kboracle KB255043 KbMtpt
Comentários