2014-11-02 42 views
0

我想搜索一個大寫字母數組,以查看數組中是否有字母。但我得到的錯誤:Error(7,27): PLS-00330: invalid use of type name or subtype name,但我似乎無法解決它。Pl sql Oracle類型名稱或子類型名稱的使用無效

create or replace FUNCTION fun_ISUPPER(parCharAt IN VARCHAR2) 
RETURN number IS 
varCharAt VARCHAR2(1) := parCharAt; 
TYPE upperCharArr IS VARRAY(4) OF VARCHAR2(1); 
ARRAY upperCharArr := upperCharArr('A', 'B', 'C', 'D'); 
BEGIN 
IF varCharAt MEMBER OF upperCharArr THEN 
    RETURN 1; 
ELSE 
    RETURN 0; 
END IF; 
END; 

回答

2

你已經宣佈。要使用它,你需要聲明一個該類型的變量。

" i now get the error Error(7,6): PLS-00306: wrong number or types of arguments in call to 'MEMBER OF'"

這是因爲您正在使用VARRAY。 documentation advises us「沒有比較變量的機制。」所以你應該使用嵌套表。使用VARRAY的唯一原因是我們需要保留集合中元素的順序;我認爲這不適用於此。這是一個工作版本:

create or replace FUNCTION fun_ISUPPER(parCharAt IN VARCHAR2) 
    RETURN number IS 
    varCharAt VARCHAR2(1) := parCharAt; 
    TYPE upperCharArr IS TABLE OF VARCHAR2(1); 
    l_array upperCharArr := upperCharArr('A', 'B', 'C', 'D'); 
BEGIN 
    IF varCharAt MEMBER OF l_array THEN 
    RETURN 1; 
    ELSE 
    RETURN 0; 
    END IF; 
END; 
+1

嘿感謝您的答覆,但我現在得到的錯誤錯誤(7,6):PLS-00306:錯號碼或類型的調用「成員的」 – 2014-11-02 09:13:38

+0

感謝參數,並感謝您的解釋。 – 2014-11-02 11:13:03

相關問題