中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
利用modplsql使用灵活的参数传递
作者:佚名 时间:2004-07-09 10:40 出处:互连网 责编:chinaitpower
              摘要:利用modplsql使用灵活的参数传递

  Oracle支持将modplsql Apache模块作为Apache Web服务器和数据库PL/SQL包过程之间的主接口。
  
  有时候在modplsql的约束下工作是可能会比较困难。它在服务器端Web开发平台强迫参数的数量、类型和每个参数名字。由于PL/SQL语言的是强类型的并且是基于参数的个数和类型.过载(overload)的,所以它就成了一个限制。
  
  例如,如果你对modplsql模块发出一个Web请求foo?a=1&b=2,那么modplsql引擎就会寻找匹配签名foo(a,b)的PL/SQL过程。如果你再添加一个参数&c=3,查找就会失败并返回一个400错误。如果你试图传入名字一样的多个变量(典型的使用复选框的情况),比如说a=2&b=3,查找就会失败,除非a是对一个数组类型的映射。
  
  Modplsql的开发人员已经意识到了这个限制,在严格匹配之外又添加了指定灵活参数传递的能力。如果需要请求modplsql完成灵活参数传递,在过程名的前面加一个惊叹号(!)即可。这样就会告诉modplsql首先寻找带两个参数的方法,然后是老的那个四参数的方法,其中所有的参数都通过数组传递,例如:
  
  create or replace procedure flex2
  (
    name_arrayowa_util.vc_arr,
    value_arrayowa_util.vc_arr
  )
  is
  begin
     htp.p('<ul>');
     for i in 1..name_array.count loop
      htp.p('<li>'||name_array(i)||'='||value_array(i)||'</li>');
    end loop;
    htp.p('</ul>');
  end;
  /
  show errors;
  
  如果你指定类似http://myhost:7777/pls/scott/flex2?a=1&b=2&b=3&c=4....的URL的话,这个过程就会被调用。Name_array由数组a、b、b、c填充;在这里是由1、2、3、4填充的。你实际上可以用任何TABLE OF…数组作为一个参数而不仅限于这里所指定的这些。
  
  老的四参数格式只有在新数据库中没有发现两参数格式的时候才会用到,但是由于向后兼容的原因它依然被支持:
  
  create or replace procedure flex4
  (
    num_entries number,
    name_array in owa_util.vc_arr,
    value_array in owa_util.vc_arr,
    reserved in owa_util.vc_arr
  )
  is
  begin
    htp.p('<ul>');
    for i in 1..num_entries loop
      htp.p('<li>'||name_array(i)||'='||value_array(i)||'</li>');
    end loop;
    htp.p('</ul>');
  end flex4;
  /
  show errors;
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有