Jak načíst ADO Recordset z Oracle Through ASP použití KURZORŮ REF

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:255043
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Souhrn
S vydáním součástí Microsoft Data Access Components (MDAC) 2.5 zprostředkovatele Microsoft OLEDB Oracle nyní podporuje vrácení sady záznamů ActiveX Data Objects (ADO) z procedury Oracle prostřednictvím použití z typu REF CURSOR. Tato funkce je podporována pouze ve zprostředkovateli Microsoft OLEDB Oracle. Microsoft ODBC for Oracle ovladač nepodporuje použití KURZORŮ REF.
Další informace
Nové funkce má některé výhody přes předchozí zprostředkovatele:
  • V předchozích verzích zprostředkovatele bylo jediným způsobem, jak načíst sadu záznamů ADO z procedury Oracle deklarovat tabulky PL/SQL pro každý sloupec byl vracených v sadě záznamů. S nového zprostředkovatele potřebujete deklarovat jeden REF CURSOR, které pak zpracovává vrácení všech sloupců.

    Další informace o načítání Oracle procedury prostřednictvím PL/SQL tabulek klepněte článku číslo článku databáze Microsoft Knowledge Base:
    229919Jak načíst objektu Recordset z Oracle použití ADO na ASP
  • V předchozí verzi zprostředkovatele bylo určit maximální počet záznamů, které by v sadě záznamů vrátit. Když otevřete sadu záznamů ADO, který je založen na REF CURSOR, není nadále nutné daný krok. Nového zprostředkovatele můžete podobně zadat 0 počet záznamů. Například:

    {call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}					
Použití vzorku v tomto článku:
  • Měli byste být proficient s Microsoft Visual Basic Scripting Edition (VBScript), ActiveX Data Objects (ADO) a Active Server Pages (ASP).

  • Pokud bude, být vytvoření balíčků Oracle, je nutné porozumět Oracle procedurální jazyk/strukturované dotazovací jazyk.

  • Práce s databázi Oracle nutné správně nakonfigurovat váš Internet Information Server (IIS).

    Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    193225Jak nakonfigurovat připojení k Oracle z ASP a ADO IIS

Ukázkový kód

Následující ukázkový kód demonstruje načíst sadu záznamů ADO z procedury Oracle prostřednictvím REF CURSOR a zobrazí data na stránce ASP. Je třeba upravit řetězec připojení OLEDB použitý v kódu ASP k připojení k databázi Oracle.

  1. Vytvořte následující balíček Oracle na serveru Oracle před spuštěním libovolné kódu ASP. Tento balíček používá některé tabulek definovaných ve schématu Oracle Scott/Tiger. Scott Oracle/Tiger schématu je nainstalována s výchozí instalace Oracle. Toto schéma neexistuje, musíte spustit skripty následující tabulky a vložit některé informace do tabulek:

    Skripty tabulky
    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));						

    Balíček skripty
    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. Skript ASP volá předchozí postup je následující:
    <%@ 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>						
Odkazy
Další informace o MDAC naleznete na následujícím webu: Dokumentace Oracle8 Enterprise Edition
REF_CURSOR

Upozornění: Tento článek je přeložený automaticky

خصائص

رقم الموضوع: 255043 - آخر مراجعة: 05/17/2007 10:33:26 - المراجعة: 3.3

Microsoft OLE DB Provider for Oracle Server 1.0

  • kbmt kbhowto kboracle KB255043 KbMtcs
تعليقات