Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

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

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

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 255043 - Tinjauan Terakhir: 09/21/2011 10:31:00 - Revisi: 2.0

  • kbhowto kboracle kbmt KB255043 KbMtid
Tanggapan