程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用文字下標簡化PL/SQL技巧

使用文字下標簡化PL/SQL技巧

編輯:關於SqlServer

google_ad_clIEnt = "pub-6430022987645146";google_ad_slot = "6984174763";google_ad_width = 160;google_ad_height = 600;



google_ad_clIEnt = "pub-6430022987645146";google_ad_width = 160;google_ad_height = 600;google_ad_format = "160x600_as";google_cpa_choice = "CAEaCIxsmjE5mLWmUDRQHVAFUAdQLFAMUANQnQJQL1AU";google_color_border = "336699";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_text = "000000";google_color_url = "008000";


var alimama_pid="mm_10096109_566393_892186"; var alimama_titlecolor="0000FF"; var alimama_descolor ="000000"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_linkcolor="008000"; var alimama_bottomcolor="FFFFFF"; var alimama_anglesize="0"; var alimama_bgpic="0"; var alimama_icon="0"; var alimama_sizecode="11"; var alimama_width=760; var alimama_height=90; var alimama_type=2;

以前稱為INDEX BY表格的聯合數組就一直是PL/SQL的一項功能。它們是稀松數組,這意味著它們只存儲所裝載的元素,不會為中間目錄值保留空間。然而,它們的一個原始局限在於下標(即INDEX BY的“目錄”)必須為整數。

  Oracle 9i第2版擴充了這一功能,允許以文字為下標。這使得聯合數組更像是其它語言,如Perl中的雜湊表格。

  為說明文字字符串可成為目錄值,簡單使用INDEX BY VARCHAR2(用最大長度完成),不要使用慣常的INDEX BY BINARY_INTEGER。下面是一個實例:

  TYPE counters_type IS TABLE OF BINARY_INTEGER
  INDEX BY VARCHAR2(20);
  region_counts?

 COUNTERS_TYPE;

  要處理聯合數組的單個元素,使用一個VARCHAR2變量或文字作下標。下面的語句更新了region_counts的一個元素。

  region_counts(''Southwest'') := region_counts(''Southwest'') + 1;

  要遍歷一個聯合數組的所有元素,使用集合方法.FIRST、 .NEXT(''key'')、 .PRIOR(''key'')和.LAST,如下面的代碼所示(假定v_sub以前聲明為VARCHAR2)。

  v_grand_total := 0;
  v_sub := region_counts.FIRST;
  WHILE v_sub IS NOT NULL LOOP
  v_grand_total := v_grand_total + region_counts(v_sub);
  v_sub := region_counts.NEXT(v_sub);
  END LOOP;

  直接使用文字可簡化你的代碼。在前面的版本中,程序可能使用一個兩列的INDEX BY數組:一列存儲地區名稱,另一列存儲總數量。為更新計數器,代碼首先在第一列中搜索地區代碼。一旦發現正確的下標,它將更新總數列中的對應項目。

  列表A說明了上述聯合數組技巧。它聲明一個叫做counters_type的數組類型,然後建立一個那種類型的稱做region_counts的實例。增加數據、進行更新、並繼續用文字作下標進行處理。

  即使一個聯合數組能夠使用集合方法,它也不能像嵌套表格一樣作為列存儲在數據庫中。在PL/SQL程序中,當決定用哪種集合類型進行臨時存儲時,記住這一點。


var alimama_pid="mm_10096109_566393_892989"; var alimama_titlecolor="0000FF"; var alimama_descolor ="000000"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_linkcolor="008000"; var alimama_bottomcolor="FFFFFF"; var alimama_anglesize="0"; var alimama_bgpic="0"; var alimama_icon="0"; var alimama_sizecode="11"; var alimama_width=760; var alimama_height=90; var alimama_type=2;
google_ad_clIEnt = "pub-6430022987645146";google_ad_slot = "7812729674";google_ad_width = 728;google_ad_height = 90;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved