สำหรับ Oracle ยักษ์ใหญ่นั้น Asp นั้นมีความยืดหยุ่นในการใช้งานมาก โดยเฉพาะเรื่องการคืนชุดผลลัพธ์ (Recordset) ทำให้หลายๆ คนประสบปัญหา หลังจากสำรวจและฝึกฝนแล้ว ฉันเขียนวิธีแก้ปัญหาของตัวเองด้านล่าง:
แสดงให้เห็น:
เวอร์ชันของไคลเอนต์ Oracle ของฉันคือ oracle 9i เมื่อติดตั้งไคลเอนต์ คุณจะไม่สามารถใช้การติดตั้งเริ่มต้นได้ คุณต้องปรับแต่งมัน จากนั้นเลือกเนื้อหาที่เกี่ยวข้องกับ OLEDB ทั้งหมดแล้วติดตั้ง มิฉะนั้น คุณจะไม่พบมันเมื่อคุณไปที่ ผู้ให้บริการด้านล่าง
คัดลอกรหัสรหัสดังต่อไปนี้:
<%@Language=VBSCRIPT CodePage=936 LCID=2052%>
<%ตัวเลือกที่ชัดเจน%>
<!-- #include file=../adovbs.inc -->
-
ดิม cnOra
ฟังก์ชั่น Connect2OracleServer
คอนสตรั่มติ่มซำ
conStr = ผู้ให้บริการ=MSDAORA.Oracle;แหล่งข้อมูล=xx;รหัสผู้ใช้=?;รหัสผ่าน=?
ตั้งค่า cnOra = Server.CreateObject(ADODB.Connection)
cnOra.CursorLocation = adUseClient '=3
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
cnOra.เปิด conStr
Connect2OracleServer = (ข้อผิดพลาดหมายเลข = 0)
ฟังก์ชันสิ้นสุด
ย่อย DisconnectFromOracleServer
ถ้าไม่ใช่ cnOra ก็ไม่มีอะไรแล้ว
ถ้า cnOra.State = 1 แล้ว
cnOra.ปิด
สิ้นสุดถ้า
ตั้ง cnOra = ไม่มีเลย
สิ้นสุดถ้า
จบหมวดย่อย
ย่อยเอคโค่(str)
การตอบสนองเขียน (str)
จบหมวดย่อย
ผลลัพธ์เอาท์พุตย่อย
Dim cmdOra
หรี่แสง
ตั้งค่า cmdOra = Server.CreateObject(ADODB.Command)
ด้วย cmdOra
.CommandType = adCmdText '=1
.CommandText = {เรียก PKG_TEST.GetItem(?,?)}
.Parameters.Append cmdOra.CreateParameter(p1, adNumeric, adParamInput, 10, 1)
.Parameters.Append cmdOra.CreateParameter(p2, adVarChar, adParamInput, 10, xx)
.ActiveConnection = cnOra
ตั้งค่า rs = cmdOra.Execute
ถ้าไม่ใช่ rs.Eof แล้ว
ในขณะที่ไม่ใช่ rs.Eof
เอคโค่ อาร์เอส(0)
เอคโค่ --
เอคโค่ อาร์เอส(1)
เอคโค <br>
rs.MoveNext
เวนด์
rs.ปิด
สิ้นสุดถ้า
Setrs=ไม่มีอะไร
ตั้งค่า cmdOra = ไม่มีเลย
จบด้วย
ตัดการเชื่อมต่อจาก OracleServer
จบหมวดย่อย
ถ้า Connect2OracleServer แล้ว
ผลลัพธ์ผลลัพธ์
อื่น
การตอบกลับเขียน(ข้อผิดพลาดคำอธิบาย)
สิ้นสุดถ้า
-
ต่อไปนี้เป็นสคริปต์ sql ของ Oracle
---------------------------------- สคริปต์ SQL ---------- ---- ----------------------
--สร้างแพ็คเกจ ----------------------------------
คัดลอกรหัสรหัสดังต่อไปนี้:
สร้างหรือแทนที่แพ็คเกจ PKG_TEST
เป็น
พิมพ์ rfcTest เป็นเคอร์เซอร์อ้างอิง;
ขั้นตอนการรับรายการ
( p1 ในจำนวน
p2 ใน VARCHAR2,
p3 ออก rfcTest
-
END; -- ข้อมูลจำเพาะของแพ็คเกจ PKG_TEST
-------------------------------------------------- -------------------------------------------------- - -
--การสร้างตัวแพ็คเกจ----------------------------------
สร้างหรือแทนที่เนื้อหาของแพ็คเกจ PKG_TEST
เป็น
ขั้นตอนการรับรายการ
( p1 ในจำนวน
p2 ใน VARCHAR2,
p3 ออก rfcTest
-
เป็น
เริ่ม
เปิด p3 เพื่อ
SELECT * จากชื่อตาราง โดยที่ id = p1 และชื่อ = p2 และ rownum < 10;
ข้อยกเว้น
เมื่อคนอื่นแล้ว
โมฆะ ;
จบ;
END; -- เนื้อหาของแพ็คเกจ PKG_TEST