日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了為什么由VARCHAR2索引的關聯數組存儲的元素不超過9個的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

VARCHAR2(32000)索引的關聯數組在下面的代碼中僅存儲9個元素。
而如果我使用由pls_INTEGER索引的關聯數組,我可以在數據結構中存儲9個以上的元素(在我的例子中為15個元素)。

那么在我的示例中,為什么使用VARCHAR2索引的關聯數組不能接受9個以上的元素。

編碼:

declare
--TYPE tabperson IS TABLE OF varchar2(8) INDEX BY pls_integer;
TYPE tabperson IS TABLE OF varchar2(8) INDEX BY varchar2 (32000);
wtabperson tabperson ;
begin
   FOR i IN 1..15
     LOOP
        wtabperson(i) := 'A' || i;

        dbms_output.PUT_LINE(
                    'i---------> ' || 'size ' || wtabperson.last || ' content ' || 
                      wtabperson(i));
    end loop;
end;

這是我在控制臺中得到的信息:

[2021-06-14 11:32:59] i---------> size 1 content A1
[2021-06-14 11:32:59] i---------> size 2 content A2
[2021-06-14 11:32:59] i---------> size 3 content A3
[2021-06-14 11:32:59] i---------> size 4 content A4
[2021-06-14 11:32:59] i---------> size 5 content A5
[2021-06-14 11:32:59] i---------> size 6 content A6
[2021-06-14 11:32:59] i---------> size 7 content A7
[2021-06-14 11:32:59] i---------> size 8 content A8
[2021-06-14 11:32:59] i---------> size 9 content A9
[2021-06-14 11:32:59] i---------> size 9 content A10
[2021-06-14 11:32:59] i---------> size 9 content A11
[2021-06-14 11:32:59] i---------> size 9 content A12
[2021-06-14 11:32:59] i---------> size 9 content A13
[2021-06-14 11:32:59] i---------> size 9 content A14
[2021-06-14 11:32:59] i---------> size 9 content A15

那么為什么wtabson.last塊位于9

如果我在示例中使用此類型:

TYPE tabperson IS TABLE OF varchar2(8) INDEX BY pls_integer

我得到了預期的結果:

[2021-06-14 11:39:43] i---------> size 1 content A1
[2021-06-14 11:39:43] i---------> size 2 content A2
 //
[2021-06-14 11:39:43] i---------> size 8 content A8
[2021-06-14 11:39:43] i---------> size 9 content A9
[2021-06-14 11:39:43] i---------> size 10 content A10
[2021-06-14 11:39:43] i---------> size 11 content A11
[2021-06-14 11:39:43] i---------> size 12 content A12
[2021-06-14 11:39:43] i---------> size 13 content A13
[2021-06-14 11:39:43] i---------> size 14 content A14
[2021-06-14 11:39:43] i---------> size 15 content A15

有人能解釋一下當我使用帶有VARCHAR2索引的關聯數組時wtabson.last的這種意外行為嗎?

提前謝謝

推薦答案

您看到的是,因為索引是一個字符串;您添加的第15個元素的索引為‘15’,而不是數字15;與字符串比較,‘9’高于‘15’。因此,last顯示的字符串值最高,仍為‘9’。如@Koen sais所示,這是the documented behaviour:

對于由PLS_INTEGER索引的關聯數組,第一個和最后一個元素分別是具有最小和最大索引的元素。對于按字符串索引的關聯數組,第一個和最后一個元素分別是鍵值最低和最高的元素。

其中‘最高’和‘最低’基于string comparison。

這與有多少元素無關(顯然是15個);受影響的只是索引值的行為。

如果您有更多的元素,那么當您傳遞89時,您將看到last值發生變化,因為‘90’是比‘9’更高的值,而‘91’是比‘90’更高的值;但是當您傳遞99時,它會一直保持到900。以此類推。

db<>fiddle

這篇關于為什么由VARCHAR2索引的關聯數組存儲的元素不超過9個的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:associative-array errorwhyanAssociativearrayindexedbyVARCHAR2doesn'
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定