Al momento sei offline in attesa che la connessione Internet venga ristabilita

Recupero di Recordset ADO da Oracle tramite ASP mediante REF CURSOR

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 255043
Dichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Sommario
Grazie al rilascio di Microsoft Data Access Components (MDAC) 2.5, il provider OLEDB di Microsoft per Oracle supporta ora la restituzione di recordset ActiveX Data Objects (ADO) da una routine Oracle tramite l'utilizzo di un tipo di REF CURSOR. Questa funzionalità è supportata solo nel provider Microsoft OLEDB per Oracle. Il driver Microsoft ODBC per Oracle non supporta l'utilizzo di REF CURSOR.
Informazioni
Questa nuova funzionalità offre alcuni vantaggi tramite il provider precedente:
  • Nelle versioni precedenti del provider l'unico modo per recuperare un recordset ADO da una routine di Oracle era per dichiarare una tabella di PL/SQL per ogni colonna che è stato restituito nel recordset. Con il provider nuovo che è necessario solo dichiarare un REF CURSOR, che gestisce quindi la restituzione di tutte le colonne.

    Per ulteriori informazioni sul recupero di procedure Oracle mediante tabelle PL/SQL, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    229919Recupero di un oggetto Recordset da Oracle con ADO in ASP
  • Nella versione precedente del provider è necessario specificare il numero massimo di record che restituirebbe nel recordset. Quando si apre un recordset ADO che si basa un REF CURSOR, tale passaggio non è più necessario. Il nuovo provider consente solo di specificare 0 per il numero di record. Ad esempio:

    {call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}					
Per utilizzare l'esempio in questo articolo:
  • Dovrebbe essere esperto con Microsoft Visual Basic, Scripting Edition (VBScript), ActiveX Data Objects (ADO) e (Active Server Pages).

  • Se si creano package Oracle, è necessario comprendere procedurale lingua/strutturati Query Language di Oracle.

  • Di Internet Information Server (IIS) deve essere configurato correttamente per utilizzare il database Oracle.

    Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    193225Come configurare IIS per connettersi a Oracle da ASP e ADO

Codice di esempio

Nell'esempio di codice riportato di seguito viene illustrato come recuperare un recordset ADO da una routine Oracle tramite un REF CURSOR e quindi visualizza i dati in una pagina ASP. È necessario modificare la stringa di connessione di OLE DB utilizzata nel codice ASP per la connessione al database Oracle.

  1. Creare il seguente package Oracle sul server Oracle prima di eseguire il codice ASP. Questo pacchetto utilizza alcune tabelle definite nello schema Oracle Scott/Tiger. Lo schema Oracle Scott/Tiger viene installato con installazione predefinita di Oracle. Se questo schema non esiste, eseguire gli script seguenti di tabella e inserire alcune informazioni in tabelle:

    script tabella
    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));						

    script del pacchetto
    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. Di seguito è riportato lo script ASP che richiama la procedura precedente:
    <%@ 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>						
Riferimenti
Per ulteriori informazioni su MDAC, vedere il seguente sito Web: Documentazione di Oracle8 Enterprise
REF_CURSOR

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 255043 - Ultima revisione: 05/17/2007 10:33:26 - Revisione: 3.3

Microsoft OLE DB Provider for Oracle Server 1.0

  • kbmt kbhowto kboracle KB255043 KbMtit
Feedback
html>