网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.解析:用UNIX的kill命令终止Orac.
.数据库复制技术在Internet上的实.
.[Oracle]手工转移数据库Step By .
.在Oracle中使用自治事务保存日志.
.Linux系统下的Oracle数据库编程详.
.Oracle 常见问答.
.Windows下Oracle数据库进程的启动.
.Oracle9i Data Guard的灾难防护.
.checkpoint小议.
.手动制作Oracle9i/10g客户端的实.
.Oracle监控数据库性能的SQL汇总.
.0racle-07445 错误的解决方法和处.
.export/import技巧.
.案例学习Oracle错误:ORA-00604.
.Fedora Core 3安装Oracle 10.1.0.
.修改ORACLE的DATAFILE文件名.
.Oracle开发工具介绍.
.Oracle中构建基于VPD特性的安全数.
.用ORACLE*Forms 和ORACLE*Graphi.
.实例讲解Oracle数据库自动增加ID.

利用modplsql使用灵活的参数传递

发表日期:2008-2-9



  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;
上一篇:使用Expect和命名管状远程控制SQL*Plus 人气:668
下一篇:isql*plus中经常使用修改select语句的语法 人气:807
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐