Bagaimana untuk mengambil ADO Recordset dari Oracle melalui ASP menggunakan KURSOR REF

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 255043
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Dengan rilis dari Microsoft Data akses komponen (MDAC) 2.5, penyedia Microsoft OLEDB untuk Oracle sekarang mendukung kembalinya objek Data ActiveX (ADO) recordsets dari prosedur Oracle melalui penggunaan sejenis REF KURSOR. Fungsi ini hanya didukung di Microsoft OLEDB penyedia untuk Oracle. ODBC Microsoft untuk Oracle pengemudi tidak mendukung penggunaan REF KURSOR.

INFORMASI LEBIH LANJUT

Fungsi baru ini memiliki beberapa manfaat lebih dari penyedia sebelumnya:
  • Dalam versi sebelumnya dari penyedia satu-satunya cara untuk mengambil ADO recordset dari Oracle prosedur adalah untuk menyatakan PL/SQL meja untuk setiap kolom yang menjadi dikembalikan dalam recordset. Penyedia baru Anda hanya perlu menyatakan satu REF KURSOR, yang kemudian menangani kembali semua kolom.

    Untuk informasi tambahan mengenai mengambil Oracle prosedur melalui tabel PL/SQL, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
    229919 Bagaimana untuk mengambil Recordset dari Oracle menggunakan ADO di ASP
  • Dalam versi sebelumnya selular Anda harus menentukan jumlah maksimum catatan yang akan kembali dalam recordset. Ketika Anda membuka recordset ADO yang didasarkan pada KURSOR REF, bahwa langkah ini tidak lagi diperlukan. Penyedia baru, Anda hanya dapat menentukan 0 untuk jumlah record. Misalnya:

    {call curspkg_join.open_join_cursor1(?, {resultset 0, io_cursor})}
    					
Menggunakan contoh dalam artikel ini:
  • Anda harus menjadi mahir dengan Microsoft Visual Basic Scripting Edition (VBScript), objek Data ActiveX (ADO) dan Active Server Pages (ASP).

  • Jika Anda akan membuat paket Oracle, Anda harus memahami Oracle's prosedural bahasa/Structured Query Language.

  • Anda Internet Information Server (IIS) harus dikonfigurasi dengan benar untuk bekerja dengan Oracle database.

    Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
    193225 Cara mengkonfigurasi IIS untuk menyambung ke Oracle dari ASP dan ADO

Contoh kode

Dalam kode contoh berikut menunjukkan cara untuk mengambil ADO recordset dari Oracle prosedur melalui REF KURSOR, dan kemudian menampilkan data pada halaman ASP. Anda harus memodifikasi OLEDB rangkaian sambungan yang digunakan dalam kode ASP untuk koneksi ke Oracle database.

  1. Membuat paket Oracle berikut pada server Oracle sebelum Anda menjalankan salah satu kode ASP. Paket ini menggunakan beberapa tabel yang didefinisikan pada schema Oracle Scott/harimau. Skema Oracle Scott/Tiger diinstal dengan Instalasi Oracle default. Jika tidak ada skema ini, Anda harus menjalankan skrip tabel berikut dan memasukkan informasi ke dalam tabel:

    Skrip tabel
    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 script
    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. Berikut adalah ASP script yang panggilan prosedur sebelumnya:
    <%@ 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>
    						

REFERENSI

Untuk informasi lebih lanjut tentang MDAC, silakan lihat situs Web berikut:
http://msdn2.Microsoft.com/en-US/data/aa937695.aspx
Dokumentasi Oracle8 Enterprise Edition

Properti

ID Artikel: 255043 - Kajian Terakhir: 21 September 2011 - Revisi: 2.0
Kata kunci: 
kbhowto kboracle kbmt KB255043 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:255043
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

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