Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

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

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
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.
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 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. 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: Oracle8 Enterprise Edition-Dokumentation
REF_CURSOR

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 255043 – Letzte Überarbeitung: 05/17/2007 10:33:26 – Revision: 3.3

Microsoft OLE DB Provider for Oracle Server 1.0

  • kbmt kbhowto kboracle KB255043 KbMtde
Feedback
/html>