国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

利用modplsql使用靈活的參數傳遞

2024-07-21 02:34:43
字體:
來源:轉載
供稿:網友

  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;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺平县| 壶关县| 天柱县| 伊吾县| 碌曲县| 瑞金市| 海南省| 车致| 额尔古纳市| 二手房| 台南县| 安多县| 永年县| 安泽县| 双峰县| 贵阳市| 丰镇市| 泽州县| 织金县| 苍梧县| 辰溪县| 吉安市| 太谷县| 毕节市| 舞钢市| 英山县| 通化市| 宁河县| 白山市| 射洪县| 绥化市| 会同县| 和田市| 泽州县| 卢龙县| 奉节县| 罗江县| 栾川县| 韩城市| 松溪县| 临安市|