Gewusst wie: Abrufen von ADO-Recordset von Oracle über ASP mit REF CURSORS

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 255043 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Mit der Veröffentlichung von Microsoft Data Access Components (MDAC) 2.5 unterstützt Microsoft OLEDB-Provider für Oracle jetzt den Ertrag von Recordsets (ActiveX Data Objects) eine Oracle-Prozedur mithilfe der einen REF CURSOR-Typ. Diese Funktionalität ist nur in der Microsoft OLEDB-Provider für Oracle unterstützt. Die Verwendung von REF CURSORS wird von den Microsoft ODBC-Treiber für Oracle nicht unterstützt.

Weitere Informationen

Diese neue Funktionalität hat einige Vorteile über vorherige Anbieter:
  • In früheren Versionen des Anbieters war die einzige Möglichkeit, ein ADO-Recordset aus einer Oracle-Prozedur abrufen eine PL-SQL-Tabelle für jede Spalte deklarieren, die im Recordset zurückgegeben wurde. Mit dem neuen Anbieter, den Sie nur einen REF CURSOR deklarieren müssen verarbeitet, die Rückgabe aller Spalten.

    Weitere Informationen zu Oracle-Prozeduren über PL-SQL-Tabellen abrufen folgendem Artikel der Microsoft Knowledge Base:
    229919Gewusst wie: Abrufen ein Recordsets aus Oracle mit ADO auf ASP
  • In der früheren Version des Anbieters mussten Sie die maximale Anzahl von Datensätzen angeben, die im Recordset zurückgeben würde. Wenn Sie ein ADO-Recordset, die auf einen REF CURSOR basiert öffnen, ist die Schritt nicht mehr erforderlich. Mit dem neuen Anbieter können Sie einfach 0 für die Anzahl der Datensätze angeben. Beispiel:

    {call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}
    					
So verwenden Sie das Beispiel in diesem Artikel:
  • Sie sollten geübter mit Microsoft Visual Basic Scripting Edition (VBScript), ActiveX Data Objects (ADO) und Active Server Pages (ASP) sein.

  • Wenn Sie Oracle-Paketen erstellen, müssen Sie Oracle prozeduralen Language-strukturierte Abfragesprache verstehen.

  • Internet Information Server (IIS) muss ordnungsgemäß konfiguriert werden, mit der Oracle-Datenbank arbeiten.

    Weitere Informationen finden Sie die Artikel der Microsoft Knowledge Base:
    193225Konfigurieren von IIS für Verbindung zu Oracle von ASP und ADO

Beispielcode

Der folgende Beispielcode veranschaulicht, wie ein ADO-Recordset aus einer Oracle-Prozedur über einen REF CURSOR abgerufen und zeigt die Daten auf einer ASP-Seite. Sie müssen im ASP-Code Verbindung zu Oracle-Datenbank verwendete OLE DB-Verbindungszeichenfolge ändern.

  1. Erstellen Sie das folgende Oracle-Paket auf der Oracle-Server vor dem Ausführen eines ASP-Code. Dieses Paket setzt einige Tabellen im Oracle Scott/Tiger-Schema definiert. Das Oracle Scott/Tiger-Schema wird mit der Oracle-Standardinstallation installiert. Wenn dieses Schema nicht vorhanden ist, führen Sie die folgende Tabelle Skripts und einige Informationen in den Tabellen einfügen:

    Tabelle-Skripts
    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)
    );
    						

    Paket-Skripts
    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 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;
    / 
    						
  2. Folgendes ist das ASP-Skript, das die vorhergehende Prozedur aufruft:
    <%@ 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>
    						

Informationsquellen

Weitere Informationen zu MDAC finden Sie in den folgenden Website:
http://msdn2.microsoft.com/en-us/data/aa937695.aspx
Oracle8 Enterprise Edition-Dokumentation

Eigenschaften

Artikel-ID: 255043 - Geändert am: Donnerstag, 17. Mai 2007 - Version: 3.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft OLE DB Provider for Oracle Server 1.0
Keywords: 
kbmt kbhowto kboracle KB255043 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 255043
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

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