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

经过摸索和实践,我把自己的解决方法,写在下面:

说明:

我的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

时间: 2024-11-02 12:34:30

Asp Oracle存储过程返回结果集的代码的相关文章

C#调用ORACLE存储过程返回结果集及函数

oracle|存储过程|函数   ORACLE段:首先在ORACLE建立PACKAGE和PACKAGE BODY,将在这里面定义函数和存储过程返回结果集.1:建立PACKAGE:CREATE OR REPLACE package SCOTT.pk_wtistype mytype is ref cursor;procedure p_wt(mycs out mytype);function f_get(str in varchar2)return varchar2;end; /说明:其实PACKAG

用.NET调用Oracle存储过程返回记录集

oracle的存储过程返回记录集,关键之处是要用游标.关于数据库的游标(cursor)大家肯定都接触不少,我们可以通过OPEN,FETCH,CLOSE操作控制游标进行各种方便的操作,这方面的例子我就不在重复了. 我们现在要介绍的是游标变量(cursor variable).类似游标,游标变量也是指向一个查询结果集的当前行.不同的是,游标变量能为任何类型相似(type-compatible)的查询打开,而并不是绑定到某一个特定的查询.通过游标变量,你可以在数据库的数据提取中获得更多的方便. 首先是

Oracle 存储过程返回结果集

oracle|存储过程 1.返回数组 (作者:enhydraboy(乱舞的浮尘) ) 在oracle后台创建一个程序包或者存储过程connect scott/tiger; CREATE OR REPLACE PACKAGE ado_callpkg ASTYPE eid IS TABLE of NUMBER(4) INDEX BY BINARY_INTEGER;TYPE ename IS TABLE of VARCHAR2(40) INDEX BY BINARY_INTEGER;PROCEDURE

使用VB调用Oracle程序包内的存储过程返回结果集

oracle|程序|存储过程        在实际的项目开发中我们需要通过VB(或其他语言工具)调用Oracle程序包内的存储过程返回结果集.这里以短信运营平台中的一个调用为例来说明这个过程,希望对你有所帮助. --一.使用SQL*Plus创建以下项目:--1.建表("OW_SMP"为方案名称,下同) CREATE TABLE "OW_SMP"."SM_Send_SM_List"(    SerialNo INT  PRIMARY KEY,  -

EF如何执行oracle带返回结果集的存储过程?

问题描述 EF如何执行oracle带返回结果集的存储过程?如图..提示这个错误,请教大神,如何才能让EF执行Oracle的带返回结果的存储过程 解决方案 解决方案二:问题和这个人的一模一样..http://bbs.csdn.net/topics/390095809但是没有解决解决方案三: 解决方案四:这么简单的逻辑就不要用存储过程啦~接下来是个人猜想和排错思考1监控oracle是否接受到查询请求,sqlserver是可以检查别人发过来的查询语句的2看看查询语句是否正确3我觉得最大的返回的问题实体

一个通过Oracle8i存储过程,返回记录集的程序包(存储过程)

oracle|程序|存储过程|记录集 提示:在Oracle8i中,如果需要通过存储过程返回结果集, 需要使用游标! CREATE OR REPLACE  PACKAGE BODY "SMS_PAY"."SMSMAINT"                                                                               IS  --功能描述:查询代理银行交易流水信息 writer: wang haibo 200

oracle复合类型-oracle 存储过程 返回复合数据类型(index by表) ibatis如何接受

问题描述 oracle 存储过程 返回复合数据类型(index by表) ibatis如何接受 最近有个问题一直困扰着,希望各位能给予帮助. 先贴代码: 1 2 3 jdbcType="Object" mode="IN" /> 4 5 jdbcType="ARRAY" mode="OUT" typeHandler="com.diy.object.entity.ObjectTypeHandler" /&

oracle11g-vs2012调用oracle存储过程返回输出字符串的值的问题

问题描述 vs2012调用oracle存储过程返回输出字符串的值的问题 vs2012调用oracle存储过程返回输出字符串的值的问题,在plsql中执行存储过程是没有问题的,输出的字符串也有值,但在vs中取输出参数的值时,此字符串的值为null,但 如果输出为整数,则可以得到返回值. 解决方案 贴出你的代码看看.你的参数传的对不对 解决方案二: OracleConnection conn = new OracleConnection(connstr); conn.Open(); OracleCo

php调用存储过程返回结果集

php调用存储过程返回结果集,解决can't return a result set in the given context错误的方法需要php调用存储过程,返回一个结果集,发现很困难,找了半天,终于在老外的论坛上找到解决方案,这里本地化一下. 关键就是两点 1)define('CLIENT_MULTI_RESULTS', 131072); 2)$link = mysql_connect("127.0.0.1", "root", "",1,CL