Asp Oracle存储过程返回结果集的代码

来源:asp之家 时间:2011-04-10 11:16:00 

经过摸索和实践,我把自己的解决方法,写在下面:
说明:
我的Oracle客户端的版本是 oracle 9i, 安装client端的时候,不能用默认安装,一定要自定义, 然后选择所有 OLEDB 相关的内容,都装上,否则到下面的 Provider 的时候,会找不到。

代码如下:


<%@Language="VBSCRIPT" CodePage="936" LCID="2052"%> 
<%Option Explicit%> 
<!-- #include file="../adovbs.inc" --> 
<% 
Dim cnOra 
Function Connect2OracleServer 
Dim conStr 
conStr = "Provider=MSDAORA.Oracle;Data Source=xx;User Id=?;Password=?" 
Set cnOra = Server.CreateObject("ADODB.Connection") 
cnOra.CursorLocation = adUseClient '=3 
On Error Resume Next 
cnOra.Open conStr 
Connect2OracleServer = (Err.Number = 0) 
End Function 
Sub DisconnectFromOracleServer 
If Not cnOra is Nothing Then 
If cnOra.State = 1 Then 
cnOra.Close 
End If 
Set cnOra = Nothing 
End If 
End Sub 
Sub Echo(str) 
Response.Write(str) 
End Sub 
Sub OutputResult 
Dim cmdOra 
Dim rs 
Set cmdOra = Server.CreateObject("ADODB.Command") 
With cmdOra 
.CommandType = adCmdText '=1 
.CommandText = "{call PKG_TEST.GetItem(?,?)}" 
.Parameters.Append cmdOra.CreateParameter("p1", adNumeric, adParamInput, 10, 1) 
.Parameters.Append cmdOra.CreateParameter("p2", adVarChar, adParamInput, 10, "xx") 
.ActiveConnection = cnOra 
Set rs = cmdOra.Execute 
If Not rs.Eof Then 
While Not rs.Eof 
Echo rs(0) 
Echo "--" 
Echo rs(1) 
Echo "<br>" 
rs.MoveNext 
Wend 
rs.Close 
End If 
Set rs = Nothing 
Set cmdOra = Nothing 
End With 
DisconnectFromOracleServer 
End Sub 
If Connect2OracleServer Then 
OutputResult 
Else 
Response.Write(Err.Description) 
End If 
%>

下面是 Oracle 的 sql 脚本
--------------------------------------SQL Script----------------------------------
--建包-----------------------------------

代码如下:


Create Or Replace Package PKG_TEST 
IS 
TYPE rfcTest IS REF CURSOR ; 
PROCEDURE GETITEM 
( p1 IN NUMBER, 
p2 IN VARCHAR2, 
p3 OUT rfcTest 
); 
END; -- Package Specification PKG_TEST 
--------------------------------------------------- 
--建包体----------------------------------- 
Create Or Replace Package Body PKG_TEST 
IS 
PROCEDURE GETITEM 
( p1 IN NUMBER, 
p2 IN VARCHAR2, 
p3 OUT rfcTest 

IS 
BEGIN 
OPEN p3 FOR 
SELECT * FROM tablename WHERE id = p1 AND name=p2 AND rownum < 10 ; 
EXCEPTION 
WHEN OTHERS THEN 
NULL ; 
END; 
END; -- Package Body PKG_TEST

标签:Asp,Oracle,存储过程
0
投稿

猜你喜欢

  • 双击编辑功能如何实现

    2008-02-26 16:17:00
  • 图片垂直居中的使用技巧

    2008-05-28 12:45:00
  • 解决在Dreamweaver中不支持中文文件名的方法

    2010-09-02 12:35:00
  • 一个20行左右的强$代码

    2009-12-25 15:22:00
  • Oracle回滚段的概念,用法和规划及问题的解决

    2010-07-26 13:08:00
  • 服务端XMLHTTP(ServerXMLHTTP in ASP)基本应用(下)

    2008-11-11 12:59:00
  • 在ASP与ASP.NET之间共享对话状态(1)

    2008-09-02 12:18:00
  • 你的网站使用了微格式了么

    2009-05-21 12:10:00
  • 轻松掌握执行一个安全的SQL Server安装

    2009-01-13 14:03:00
  • IE地址栏显示网站图标制作方法

    2007-10-13 11:08:00
  • firebug1.7调试实用技巧指南

    2011-06-27 20:17:22
  • ASP程序直接连接MYSQL数据库

    2008-10-03 12:13:00
  • 轻松解决AJAX的中文乱码问题

    2008-09-03 12:55:00
  • “mailto”的六则应用技巧

    2008-08-29 13:16:00
  • 基于ExtJs框架的B/S高级查询界面

    2008-10-07 18:05:00
  • 怎样设计网站首页?(解答)

    2007-11-04 18:56:00
  • Mini,又个 Javascript 选择器

    2009-10-06 14:48:00
  • 把论坛从ACCESS转成SQL版本

    2009-04-13 15:59:00
  • js 混淆加密工具代码

    2007-09-22 18:10:00
  • 网页设计十大诀窍

    2007-10-19 13:03:00
  • asp之家 网络编程 m.aspxhome.com