手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp编程>列表

ASP调用oracle存储过程

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


  ‘getforums说明是调用forum_retrieve包中的getforums

  ‘存储过程,forumname、thecount是存储过程的输出变量,

  ‘resultset 10说明输出结果集的数量,这里的数字一定

  ‘要大于实际的输出数量,如果大于设定值,则会出现

  ‘Oracle error ORA-06512错误。

  CMD.ActiveConnection = Con

  ‘建立CMD对象与Con的联系。

  CMD.CommandType = adCmdText

  ‘调用存储过程时要将Command类型设为adCmdText常量,

  ‘因此必须在此.asp文件中包含ADOVBS.inc文件。

  CMD.CommandText = SQLstr

  ‘指定Command对象的执行字符串。

  SET RS=CMD.Execute()

  ‘执行CMD,并将返回结果放到RS对象中,下面就可以对

  ‘RS对象进行操作,将结果格式化成HTML格式。

  ......

  %>

  在以上例子中存储过程只有输出变量。如果被调用的存储过程还包含输入变量,SQL连接字符串应修改如下:

  SQLstr={call package.procedure(?,..,{resultset 100,output1,output2,...})}

  其中?是每个输入变量的占位符,与输入变量的个数一一对应。另外,还要分别对每个输入变量赋值,格式如下:

  CMD.Parameters.Append CMD.CreateParameter(输入变量名,adVarChar,adParamInput,30,赋值变量)

  其中adVarChar指定变量类型是字符串;adParamInput指定变量为输入变量;30是指定字符串的最大长度,如果输入变量是整型或其他类型,则无须设置此项。所有这些常量的定义都包含在ADOVBS.INC文件中,对于不同的参数类型可查看此文件进行设置。

  三、ASP脚本调用Oracle数据库中独立的存储过程

  所谓独立的存储过程是指没有放在包中,而是作为单独的对象存储在Oracle数据字典中的过程,ASP脚本对这种存储过程的调用与上述方法略有不同,以下举例说明。例如,要在ASP脚本中调用独立的名为getmessages的存储过程,代码如下:

  CREATE OR REPLACE PROCEDURE getmessages

  (

  forumname IN messages.m_forumname%TYPE,

  lastmessage OUT messages.m_id%TYPE

  )

  AS

  BEGIN

  ......‘内容省略

  ENDgetmessages;

  在ASP文件中也是使用ADO Command对象对此过程进行调用,代码如下:

  <%

  ......

  ‘建立名为theCon的数据库连接

  Set CMD=Server.CreateObject( ADODB.Command )

  CMD.ActiveConnection=theCon

  CMD.CommandType=adCmdStoredProc

  ‘设置Command执行的是存储过程。

  CMD.Parameters.Append CMD.CreateParameter(forumName,adVarchar, adParamInput,30,theForumName )‘给存储过程输入变量forumName赋值,theForumName是

  ‘ASP文件的本地变量,将theForumNam变量的值赋给

  ‘forumName。

  CMD.Parameters.Append CMD.CreateParameter(lastMessage,adInteger, adParamOutput )

  ‘设置输出变量。

  CMD.CommandText=getLastMessages

  ‘指定要调用的存储过程名。

  CMD.Execute‘调用执行存储过程。

  getLastMessage=CMD( lastMessage )‘取得输出值。

  CMD.ActiveConnection=Nothing‘关闭CMD数据库连接。

  Set CMD=Nothing‘释放CMD对象。

  ‘将取得的结果格式化成HTML形式

  ......

  %>

  四、为什么要使用存储过程

  1.存储过程可以将多条SQL语句包含在一起执行,ASP和数据库的交互只是输入、输出参数的一次来回传递,传递信息少,因此提高了执行效率。

  2.存储过程在数据库中是经过编译后存储的,因此其执行效率比起执行同样功能的SQL语句要高很多。

  3.在开发大型应用程序过程中可以将一些标准功能逻辑模块作为存储过程放在数据库中,使得模块化程序开发的结构更加清晰,而且易于维护。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!